iOS-電池圖標【結合貝塞爾曲線控制電量顯示】

来源:https://www.cnblogs.com/wangkejia/archive/2018/03/01/8490260.html
-Advertisement-
Play Games

基於UIView類:WKJBatteryView WKJBatteryView.h WKJBatteryView.m 落日熔金,暮雲合璧,人在何處。 染柳煙濃,吹梅笛怨,春意知幾許。 元宵佳節,融和天氣,次第豈無風雨。 來相召、香車寶馬,謝他酒朋詩侶。中州盛日,閨門多暇,記得偏重三五。 鋪翠冠兒,捻 ...


 

基於UIView類:WKJBatteryView

WKJBatteryView.h

#import <UIKit/UIKit.h>

@interface WKJBatteryView : UIView
/**
 value:0 - 100
 */
- (void)setBatteryValue:(NSInteger)value;
@end

WKJBatteryView.m

#import "WKJBatteryView.h"
@interface WKJBatteryView()
///電池寬度
@property (nonatomic,assign) CGFloat b_width;
///電池高度
@property (nonatomic,assign) CGFloat b_height;
///電池外線寬
@property (nonatomic,assign) CGFloat b_lineW;
@property (nonatomic,strong) UIView *batteryView;
@end
@implementation WKJBatteryView
- (instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        [self drawBattery];
    }
    return self;
}
///畫圖標
- (void)drawBattery{
    ///x坐標
    CGFloat b_x = 1;
    ///y坐標
    CGFloat b_y = 1;
    _b_height = self.bounds.size.height - 2;
    _b_width = self.bounds.size.width - 5;
    _b_lineW = 1;
    
    //畫電池【左邊電池】
    UIBezierPath *pathLeft = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(b_x, b_y, _b_width, _b_height) cornerRadius:2];
    CAShapeLayer *batteryLayer = [CAShapeLayer layer];
    batteryLayer.lineWidth = _b_lineW;
    batteryLayer.strokeColor = [UIColor lightGrayColor].CGColor;
    batteryLayer.fillColor = [UIColor clearColor].CGColor;
    batteryLayer.path = [pathLeft CGPath];
    [self.layer addSublayer:batteryLayer];
    
    //畫電池【右邊電池箭頭】
    UIBezierPath *pathRight = [UIBezierPath bezierPath];
    [pathRight moveToPoint:CGPointMake(b_x + _b_width+1, b_y + _b_height/3)];
    [pathRight addLineToPoint:CGPointMake(b_x + _b_width+1, b_y + _b_height * 2/3)];
    CAShapeLayer *layerRight = [CAShapeLayer layer];
    layerRight.lineWidth = 2;
    layerRight.strokeColor = [UIColor lightGrayColor].CGColor;
    layerRight.fillColor = [UIColor clearColor].CGColor;
    layerRight.path = [pathRight CGPath];
    [self.layer addSublayer:layerRight];
    
    ///電池內填充
    _batteryView = [[UIView alloc]initWithFrame:CGRectMake(b_x + 1,b_y + _b_lineW, 0, _b_height - _b_lineW * 2)];
    _batteryView.layer.cornerRadius = 2;
    _batteryView.backgroundColor = [UIColor colorWithRed:0.324 green:0.941 blue:0.413 alpha:1.000];
    [self addSubview:_batteryView];
}
///控制電量顯示
- (void)setBatteryValue:(NSInteger)value{
    if (value<10) {
        _batteryView.backgroundColor = [UIColor redColor];
    }else{
        _batteryView.backgroundColor = [UIColor colorWithRed:0.324 green:0.941 blue:0.413 alpha:1.000];
    }
    
    CGRect rect = _batteryView.frame;
    rect.size.width = (value*(_b_width - _b_lineW * 2))/100;
    _batteryView.frame  = rect;
}
@end
落日熔金,暮雲合璧,人在何處。 染柳煙濃,吹梅笛怨,春意知幾許。 元宵佳節,融和天氣,次第豈無風雨。 來相召、香車寶馬,謝他酒朋詩侶。
中州盛日,閨門多暇,記得偏重三五。 鋪翠冠兒,捻金雪柳,簇帶爭濟楚。 如今憔悴,風鬟霜鬢,怕見夜間出去。 不如向、簾兒底下,聽人笑語。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在資料庫領域,回顧2017這一年,精彩紛呈,熱點不斷,而且不乏標誌性的事件發生,如Oracle提出的自治資料庫這樣的概念,把資料庫技術帶入一個新世界。再如NDBC(中國電腦學會資料庫學術年會)慶祝四十華誕、阿裡入股MariaDB、國內類Aurora架構的產品爭相發佈、資料庫事務處理等核心技術的原創... ...
  • 透明網關概念 ORACLE透明網關(Oracle Transparent Gateway)可以解決ORACLE資料庫和非ORACLE資料庫交互數據的需求。在一個異構的分散式環境中,通過ORACLE透明網關可以訪問其他類型資料庫,例如DB2,SQL Server、Sybase....。這個類似於SQL... ...
  • 如果想在一個已經建好的表中添加一列,可以用以下代碼: alter table 表名 add column 列名 varchar(20) not null; 這條語句會向已有的表中加入一列,這一列在表的最後一列位置。如果我們希望添加在指定的一列,可以用: alter table 表名 add colu ...
  • 去年買了一本講SqlServer的書,這幾天把這本塵封已久的書拿了出來,準備按照上面的目錄擼一遍。 簡單的看了下這本書的目錄結構,一共是九個部分 資料庫安裝 建立資料庫和處理數據 高級T SQL T SQL編程 企業數據管理 SQL Server安全 監視和審計 性能調整和優化 商業智能 資料庫文件 ...
  • iPhone將具有支持不同類型多線程API的能力,這些API包括:POSIX線程,NSObject,NSThread和NSOperation. iPhone操作系統是一個真正的搶占式,多任務操作系統,允許開發人員創建多線程應用。 拿著一個iPhone時,我手中實際是 一個配備Unix操作系統的搶占式 ...
  • 首先說一個很有意思的問題:一塊720p的屏幕和1080p的屏幕那個大? 這個問題很有代表性,如果手機豎著放,720p=720px*1280px,而1080p=1080px*1920px;那麼在寬度上,前者是720個像素,後者是1080個像素,後者一定比前者大嗎? 答案是否定的,後者不一定比前者大,還 ...
  • uCrop使用 github地址 https://github.com/Yalantis/uCrop然後clone或下載到本地,運行之。 效果預覽 app/build.gradle AndroidManifest.xml 這裡theme可以改成自己的 配置uCrop 其他配置 onActivityR ...
  • JAVAHow to Improve the Performance of a Java ApplicationJava Memory ManagementWriting Java Microservices With WSO2 Microservices Framework for Java (M... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...