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

源代码相关的百度云下载链接: http://pan.baidu.com/s/1mgnipQS 密码: 19e4




转载于:https://www.cnblogs.com/goodboy-heyang/p/5014759.html

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

  1. IOS贝塞尔曲线圆形进度条和加载动画

    做项目让做一个加载动画,一个圈圈在转中间加一个图片,网上有好多demo,这里我也自己写了一个,中间的图片可加可不加.其中主要用到贝塞尔曲线.UIBezierPath是对CGContextRef的进一步 ...

  2. ios弧形进度条_ios 圆形进度条

    今天产品要弄一个圆形的进度条 1532512706923.jpg 有很多开源的进度条不用,非要弄这种效果,就不吐槽了,还是想想怎么实现 废话就不多说了 直接上代码 #import @interface ...

  3. ios弧形进度条_iOS手把手教你实现圆形进度条

    在做音频项目的时候,播放音频需要显示圆形进度条.今天,教大家如何简单地实现进度条效果!其实,实现这种效果并不困难.前提是需要了解UIBezierPath,如果未接触过,可以先阅读笔者在很久以前所写过的 ...

  4. ios弧形进度条_IOS贝塞尔曲线圆形进度条和加载动画-阿里云开发者社区

    做项目让做一个加载动画,一个圈圈在转中间加一个图片,网上有好多demo,这里我也自己写了一个,中间的图片可加可不加.其中主要用到贝塞尔曲线.UIBezierPath是对CGContextRef的进一步 ...

  5. iOS精品源码,GHConsole图片浏览器圆形进度条音视频传输连击礼物弹出动画

    2019独角兽企业重金招聘Python工程师标准>>> 1.可在app中显示的控制台框架GHConsole 2.GKPhotoBrowser--自定义图片浏览器 3.圆形进度条 4. ...

  6. iOS精品源码,GHConsole图片浏览器圆形进度条音视频传输连击礼物弹出动画 1

    1.可在app中显示的控制台框架GHConsole 2.GKPhotoBrowser--自定义图片浏览器 3.圆形进度条 4.音视频实时传输 part2(补充上一贴) 5.RSChat(以前微信写的仿 ...

  7. Android UI(四)云通讯录项目之云端更新进度条实现

    作者:泥沙砖瓦浆木匠 网站:http://blog.csdn.net/jeffli1993 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 36523458 ...

  8. android编程任务进度条,Android 进度条 ProgressBar - Android 入门教程

    今天要学的是一个特定场合要用到的控件--进度条控件.进度条的作用不言而喻,而在实际使用中,通常会有两种类型的进度条:横向进度条和圆形进度条.当然,ProgressBar 也是支持这两种类型的,可以应对 ...

  9. iOS快速实现环形渐变进度条

    前言 进度条相信我们大家都不陌生,往往我们很多时候需要使用到圆形进度条.这篇文章给大家分享了利用ios如何快速实现环形进度条,下面来一起看看. 一:先制作一个不带颜色渐变的进度条 自定义一个cycle ...

  10. iOS开发UI篇—Quartz2D使用(绘图路径)

    iOS开发UI篇-Quartz2D使用(绘图路径) 一.绘图路径 A.简单说明 在画线的时候,方法的内部默认创建一个path.它把路径都放到了path里面去. 1.创建路径  cgmutablepat ...

最新文章

  1. mysql常见日期查询问题
  2. AI一分钟 | 小鹏汽车回应前苹果员工窃取商业机密:积极配合相关调查
  3. 大国AI竞赛中国忙赶超,但美国仍主导全球AI芯片设计
  4. Libusb交叉编译和移植
  5. 【java】Java 最坑爹的 10 大功能点
  6. asp.net mvc 注册中的邮箱激活功能实现(二)
  7. 在线Javascript加密混淆工具
  8. 如何制作一款HTML5 RPG游戏引擎——第五篇,人物人物特效
  9. asp.net 通过IHttpHandler开发接口
  10. 双向链表与LinkedHashMap
  11. Atitit 上传进度的实现与原理 目录 1.1. 前端 1 1.2. 读取进度 1 1.3. 后端 定时注入进度 1 1.1.前端                         wind
  12. 用TensorFlow为图片添加字幕
  13. Go测试远控免杀学习
  14. u盘推荐知乎_求推荐好用的u盘?
  15. 单网卡实现 双IP 双网段(内外网)同时运行
  16. Maya2018生成pyd文件
  17. 哪里买. com最便宜?
  18. 第9章第1节:创建商业计划书封面幻灯片的版式 [PowerPoint精美幻灯片实战教程]
  19. VLC web插件 js接口
  20. yandex如何挑选关键词?

热门文章

  1. Mysql 日期函数 增加周天年月时分秒
  2. uni-app 引入本地iconfont的正确姿势以及阿里图标引入
  3. Backbone源码分析-noConflict
  4. 显示隐藏、淡入淡出、上卷下展的区别
  5. tomcat 多实例的Sys V风格脚本
  6. Java---类反射(1)---类反射入门和基础
  7. It#39;s about trust
  8. (转)C# 解析 json
  9. spring3: 依赖和依赖注入-xml配置-DI的配置
  10. Python与数据挖掘学习笔记(1)——Pandas模块