Quartz2D-05.利用贝瑟尔曲线实现进度条功能
2015-08-05 22:18
302 查看
效果图
代码实现
代码实现
// .h文件 #import <UIKit/UIKit.h> @interface ZJProgressView : UIView /** * 传入进度 */ @property (nonatomic, assign) CGFloat progress; @end //.m文件 #import "ZJProgressView.h" @implementation ZJProgressView - (void)drawRect:(CGRect)rect { [self drawLoop]; } // 重写setter方法 -(void)setProgress:(CGFloat)progress{ _progress = progress; // 每次调用setter方法,就重新绘制视图 [self setNeedsDisplay]; } // 画圆环 -(void)drawLoop { // 创建贝瑟尔路径 UIBezierPath *path = [UIBezierPath bezierPath]; // 计算视图位置属性 CGFloat viewW = self.bounds.size.width; CGFloat viewH = self.bounds.size.height; CGPoint center = CGPointMake(viewW * 0.5, viewH * 0.5); CGFloat margin = 2; // 当前进度条位置 CGFloat curAngle = M_PI * 2 * _progress/100.0 - M_PI_2; // 画弧 [path addArcWithCenter:center radius:viewW * 0.5 - margin startAngle:-M_PI_2 endAngle:curAngle clockwise:YES]; // 设置线宽 path.lineWidth = 3; // 设置画笔颜色 [[UIColor blueColor] setStroke]; // 路径走线 [path stroke]; } //控制器实现代码.m #import "ViewController.h" #import "ZJProgressView.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UILabel *progressLabel; @property (weak, nonatomic) IBOutlet ZJProgressView *progressView; @end @implementation ViewController // 监听滑块的值改变事件 - (IBAction)sliderValueChange:(UISlider *)sender { // 进度标签赋值 _progressLabel.text = [NSString stringWithFormat:@"%.2f%%",sender.value]; // 进度条赋值 _progressView.progress = sender.value; } - (void)viewDidLoad { [super viewDidLoad]; } @end
相关文章推荐
- Longest Palindromic Substring
- hibernate学习系列-----(4)hibernate基本查询上篇:HQL基本查询
- ASCII,Unicode和UTF-8
- 初识linux 命令(一)
- 【西祠日志】【16】今天很安静,还不错,一点点进步吧
- Maximal Square
- The Accomodation of Students
- Linux Error: 29: Illegal seek
- 设计模式7原则小结
- HDU 4371 AliceBob之生成数列直到大于n或者小于等于S(i-2)-思维-(由已知条件推最优步骤)
- LeetCode 119(Pascal's Triangle II)
- 设计模式7原则小结
- HDU5344——数学题——MZL's xor
- Java当中数组和容器之间的相互转换
- 初识linux 命令(一)
- 三维重建算法
- ArcGIS操作学习笔记
- 编译开发板提供的linux软件平台
- TESTNG重试、截屏、监听
- 读书笔记