iOS之UI--Quartz2D的入门应用--重绘下载圆形进度条

简介:

iOS之重绘下载圆形进度条

开发须知快速预览:
 
1、关于了解PI的数值:
2、- (void)drawRect:(CGRect)rect 相关: 这个方法只在self对应的控件首次创建系统会执行,为了能够达到重绘的作用, 就需要重新绘制调用这个drawRect方法,但是推荐使用一下方法: rect其实就是self本身,关于self的不变的数据,可以抽取出来优化。
效果展示:


根据效果展示应该能够很快知道需求吧,然后根据需求开始的开发过程:

1、拖拽需要的UI控件,并设置相关的属性


2、创建UIView的子类HYProgress,并将storyboard的这个绿色的UIView控件Class设置为HYProgress


3、在ViewController.m中拖线创建UISlider的事件监听的方法,通过sender.value能够获取selider的百分比对应的小数数值
在ViewController.m中通过拖线获取HYprogress的引用,因为需要将sender.value传递给这个HYProgress对象
最后通过HYProgress展示出来。

4、在HYprogress.m中,因为要操作子控件UILabel用于显示需要的信息,所以要拖线获得其引用。
但是这么直接是不会成功。至于为什么我也不知道,不过不要深究,下一步就是解决这个问题的方法。请看下一步。


5、解决拖线的问题,先创建IBOutlet代码,然后从代码左边的拖线点拖到右边的UILabel对象上就OK了。


6、创建属性progress并重写set方法,然后还要在set方法中实现对获得的progress的值进行相关的加载处理,比如
self.label.text = ...... ;


7、最后直接看代码,这个代码不是特别多,也不是特别复杂:
复制代码
 1 #import "HYProgress.h"  2  3 @interface HYProgress ()
 4  5 /** 子控件UILabel */  6 @property (nonatomic,weak)IBOutlet UILabel *label;
 7  8 /** 宽 */  9 @property (nonatomic,assign)CGFloat w;
10 /** 高 */ 11 @property (nonatomic,assign)CGFloat h;
12 13 @end 14 15 @implementation HYProgress
16 17 -(void)awakeFromNib{
18  [self setup];
19 }
20 21 -(void)setProgress:(CGFloat)progress{
22 23 _progress = progress;
24 self.label.text = [NSString stringWithFormat:@"%.2f%%",_progress*100];
25 26  [self setNeedsDisplay];
27 28 }
29 30 31 #pragma mark - 初始化绘图需要的数值
32 -(void)setup{
33 //因为drawRext传入的参数rect就是self本身 34 self.w = self.bounds.size.width;
35 self.h = self.bounds.size.height;
36 37 }
38 39 40 - (void)drawRect:(CGRect)rect {
41 // Drawing code 42 43 44 45 CGFloat endA = -M_PI_2 + M_PI * self.progress*2;
46 //2、创建贝塞尔曲线 47 UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(self.w *0.5, self.h*0.5)
48 radius:self.w*0.5-5 49 startAngle:-M_PI_2
50  endAngle:endA clockwise:YES];
51 52 [path setLineWidth:4];
53  [[UIColor redColor] setStroke];
54 55 // Path operations on the current graphics context 56  [path stroke];
57 58 }
59 60 61 @end
复制代码


相关文章
|
14天前
|
前端开发 编解码 数据格式
浅谈响应式编程在企业级前端应用 UI 开发中的实践
浅谈响应式编程在企业级前端应用 UI 开发中的实践
15 0
浅谈响应式编程在企业级前端应用 UI 开发中的实践
|
25天前
|
移动开发 前端开发 数据安全/隐私保护
iOS代码混淆-从入门到放弃
iOS代码混淆-从入门到放弃
19 0
|
1月前
|
Web App开发 数据采集 前端开发
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
15 0
|
1月前
|
XML 存储 数据格式
SAP UI5 控件 customData 属性的应用介绍
SAP UI5 控件 customData 属性的应用介绍
31 0
|
2月前
|
iOS开发 开发者
苹果iOS App Store上架操作流程详解:从开发者账号到应用发布
很多开发者在开发完iOS APP、进行内测后,下一步就面临上架App Store,不过也有很多同学对APP上架App Store的流程不太了解,下面我们来说一下iOS APP上架App Store的具体流程,如有未涉及到的部分,大家可以及时咨询,共同探讨。
|
2月前
|
开发者 iOS开发
iOS应用上架详细图文教程(上)
App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都“死”在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上架流程开始梳理,详细了解下iOS app上架的那些事。
|
2月前
|
Swift iOS开发 开发者
iOS 应用上架流程详解
iOS 应用上架流程详解
|
2月前
|
Android开发 iOS开发 UED
appuploader   iOS 应用自动发布
appuploader   iOS 应用自动发布
|
25天前
|
安全 数据安全/隐私保护 虚拟化
iOS应用加固方案解析:ipa加固安全技术全面评测
iOS应用加固方案解析:ipa加固安全技术全面评测
36 3
|
1月前
|
运维 监控 安全
应用研发平台EMAS常见问题之sophix ios flutter热更新如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
77 0