基于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 = ;
///y坐标
CGFloat b_y = ;
_b_height = self.bounds.size.height - ;
_b_width = self.bounds.size.width - ;
_b_lineW = ; //画电池【左边电池】
UIBezierPath *pathLeft = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(b_x, b_y, _b_width, _b_height) cornerRadius:];
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+, b_y + _b_height/)];
[pathRight addLineToPoint:CGPointMake(b_x + _b_width+, b_y + _b_height * /)];
CAShapeLayer *layerRight = [CAShapeLayer layer];
layerRight.lineWidth = ;
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 + ,b_y + _b_lineW, , _b_height - _b_lineW * )];
_batteryView.layer.cornerRadius = ;
_batteryView.backgroundColor = [UIColor colorWithRed:0.324 green:0.941 blue:0.413 alpha:1.000];
[self addSubview:_batteryView];
}
///控制电量显示
- (void)setBatteryValue:(NSInteger)value{
if (value<) {
_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 * ))/;
_batteryView.frame = rect;
}
@end
 
封装好WKJBatteryView后,直接 initWithFrame 实例化引用,然后添加到试图上就可以了,下面是效果:
 

落日熔金,暮云合璧,人在何处。染柳烟浓,吹梅笛怨,春意知几许。元宵佳节,融和天气,次第岂无风雨。来相召、香车宝马,谢他酒朋诗侣。中州盛日,闺门多暇,记得偏重三五。铺翠冠儿,捻金雪柳,簇带争济楚。如今憔悴,风鬟霜鬓,怕见夜间出去。不如向、帘儿底下,听人笑语。

iOS-电池图标【结合贝塞尔曲线控制电量显示】的更多相关文章

  1. SVG 贝塞尔曲线控制【方便设置】:贝塞尔曲线

    http://dayu.pw/svgcontrol/

  2. iOS开发之画图板(贝塞尔曲线)

    贝塞尔曲线,听着挺牛气一词,不过下面我们在做画图板的时候就用到贝塞尔绘直线,没用到绘制曲线的功能.如果会点PS的小伙伴会对贝塞尔曲线有更直观的理解.这篇博文的重点不在于如何用使用贝塞尔曲线,而是利用贝 ...

  3. iOS开发 贝塞尔曲线

    iOS开发 贝塞尔曲线UIBezierPath - 陌云 时间 2014-03-14 11:04:00  博客园-所有随笔区 原文  http://www.cnblogs.com/moyunmo/p/ ...

  4. IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)

    ... 首先了解一下CGContextRef: An opaque type that represents a Quartz 2D drawing environment. Graphics Con ...

  5. (转) IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)

    首先了解一下CGContextRef: An opaque type that represents a Quartz 2D drawing environment. Graphics Context ...

  6. iOS - Quartz 2D 贝塞尔曲线

    1.贝塞尔曲线 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线.一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支 ...

  7. iOS贝塞尔曲线(UIBezierPath)的基本使用方法

    简介 UIBezierPath是对Core Graphics框架的一个封装,使用UIBezierPath类我们可以画出圆形(弧线)或者多边形(比如:矩形)等形状,所以在画复杂图形的时候会经常用到. 分 ...

  8. [置顶] IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)

    首先了解一下CGContextRef: An opaque type that represents a Quartz 2D drawing environment. Graphics Context ...

  9. iOS:使用贝塞尔曲线绘制图表(折线图、柱状图、饼状图)

    1.介绍: UIBezierPath :画贝塞尔曲线的path类 UIBezierPath定义 : 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度. 曲线的定义有四个点:起始点 ...

随机推荐

  1. KBMMW 4.81.00 发布

    这次更新的速度非常快. 4.81.00 May 9 2015 Important notes (changes that may break existing code) ============== ...

  2. 2018.08.04 cogs2633. [HZOI 2016]数列操作e(线段树)

    传送门 支持区间加w(i−ql+1)2" role="presentation" style="position: relative;">w(i ...

  3. AdapterViewFlipper功能 自动播放的图片库

    案例中有"上一个""下一个""自动播放",但是我觉得可以更加完善一下,点击自动播放,按钮变成"停止播放",在按" ...

  4. modelsim仿真中Altera库的用法

    添加altera 库 实例: 把建立lpm_mux IP时生成的.v文件lpm_mux_ip.v和编写的测试脚本文件放在一起,在modelsim中建立工程,把下面两个文件添加到工程中 直接compil ...

  5. JavaScript面向对象编程[转]

    JavaScript面向对象编程 命名空间 命名空间是一个容器,它允许开发人员在一个独特的,特定于应用程序的名称下捆绑所有的功能. 在JavaScript中,命名空间只是另一个包含方法,属性,对象的对 ...

  6. Quartus II中使用脚本转换sof到rbf文件

    1.  新建一个文本文件,保存为任意但有意义的名字,如:sof_to_rbf.bat,注意,保存时请不要使用默认的格式,应该手动从.txt切换为all files 2.  在文本中输入以下内容: %Q ...

  7. Tmux入门教程

      对于程序员来说效率绝对是最重要的,那我们今天就来介绍下一个能极大提高工作效率的软件Tmux.   Tmux 是一个工具,用于在一个终端窗口中运行多个终端会话.不仅如此,你还可以通过 Tmux 使终 ...

  8. ListView的另一种可读性更强的ViewHolder模式写法

    常见的写法是这样的: @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHol ...

  9. [ASP.NET]大文件无法上传排查经验分享

    最近我们标桥下载模块,在经过正常更新后,发现软件包无法上传. 临时解决方案 因为问题结点在于文件无法上传到服务器,所以我们临时手动将文件丢到服务器,通过测试服务器将数据造出来,然后再更新到正式数据库, ...

  10. [C#学习笔记]lock锁的解释与用法

    写在前面 前几时在写业务代码的时候,看到有用到lock这个方法的,而我竟然并不知道是做什么用的,所以查找了许多博客文章,弄懂了百分之七八十,在此做下笔记. 感谢博客 http://www.cnblog ...