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
源代码相关的百度云下载链接: http://pan.baidu.com/s/1mgnipQS 密码: 19e4
转载于:https://www.cnblogs.com/goodboy-heyang/p/5014759.html
iOS之UI--Quartz2D的入门应用--重绘下载圆形进度条相关推荐
- IOS贝塞尔曲线圆形进度条和加载动画
做项目让做一个加载动画,一个圈圈在转中间加一个图片,网上有好多demo,这里我也自己写了一个,中间的图片可加可不加.其中主要用到贝塞尔曲线.UIBezierPath是对CGContextRef的进一步 ...
- ios弧形进度条_ios 圆形进度条
今天产品要弄一个圆形的进度条 1532512706923.jpg 有很多开源的进度条不用,非要弄这种效果,就不吐槽了,还是想想怎么实现 废话就不多说了 直接上代码 #import @interface ...
- ios弧形进度条_iOS手把手教你实现圆形进度条
在做音频项目的时候,播放音频需要显示圆形进度条.今天,教大家如何简单地实现进度条效果!其实,实现这种效果并不困难.前提是需要了解UIBezierPath,如果未接触过,可以先阅读笔者在很久以前所写过的 ...
- ios弧形进度条_IOS贝塞尔曲线圆形进度条和加载动画-阿里云开发者社区
做项目让做一个加载动画,一个圈圈在转中间加一个图片,网上有好多demo,这里我也自己写了一个,中间的图片可加可不加.其中主要用到贝塞尔曲线.UIBezierPath是对CGContextRef的进一步 ...
- iOS精品源码,GHConsole图片浏览器圆形进度条音视频传输连击礼物弹出动画
2019独角兽企业重金招聘Python工程师标准>>> 1.可在app中显示的控制台框架GHConsole 2.GKPhotoBrowser--自定义图片浏览器 3.圆形进度条 4. ...
- iOS精品源码,GHConsole图片浏览器圆形进度条音视频传输连击礼物弹出动画 1
1.可在app中显示的控制台框架GHConsole 2.GKPhotoBrowser--自定义图片浏览器 3.圆形进度条 4.音视频实时传输 part2(补充上一贴) 5.RSChat(以前微信写的仿 ...
- Android UI(四)云通讯录项目之云端更新进度条实现
作者:泥沙砖瓦浆木匠 网站:http://blog.csdn.net/jeffli1993 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 36523458 ...
- android编程任务进度条,Android 进度条 ProgressBar - Android 入门教程
今天要学的是一个特定场合要用到的控件--进度条控件.进度条的作用不言而喻,而在实际使用中,通常会有两种类型的进度条:横向进度条和圆形进度条.当然,ProgressBar 也是支持这两种类型的,可以应对 ...
- iOS快速实现环形渐变进度条
前言 进度条相信我们大家都不陌生,往往我们很多时候需要使用到圆形进度条.这篇文章给大家分享了利用ios如何快速实现环形进度条,下面来一起看看. 一:先制作一个不带颜色渐变的进度条 自定义一个cycle ...
- iOS开发UI篇—Quartz2D使用(绘图路径)
iOS开发UI篇-Quartz2D使用(绘图路径) 一.绘图路径 A.简单说明 在画线的时候,方法的内部默认创建一个path.它把路径都放到了path里面去. 1.创建路径 cgmutablepat ...
最新文章
- mysql常见日期查询问题
- AI一分钟 | 小鹏汽车回应前苹果员工窃取商业机密:积极配合相关调查
- 大国AI竞赛中国忙赶超,但美国仍主导全球AI芯片设计
- Libusb交叉编译和移植
- 【java】Java 最坑爹的 10 大功能点
- asp.net mvc 注册中的邮箱激活功能实现(二)
- 在线Javascript加密混淆工具
- 如何制作一款HTML5 RPG游戏引擎——第五篇,人物人物特效
- asp.net 通过IHttpHandler开发接口
- 双向链表与LinkedHashMap
- Atitit 上传进度的实现与原理 目录 1.1. 前端	1 1.2. 读取进度	1 1.3. 后端 定时注入进度	1 1.1.前端 wind
- 用TensorFlow为图片添加字幕
- Go测试远控免杀学习
- u盘推荐知乎_求推荐好用的u盘?
- 单网卡实现 双IP 双网段(内外网)同时运行
- Maya2018生成pyd文件
- 哪里买. com最便宜?
- 第9章第1节:创建商业计划书封面幻灯片的版式 [PowerPoint精美幻灯片实战教程]
- VLC web插件 js接口
- yandex如何挑选关键词?