OC - 9.基于Quartz2D绘制下载进度条(demo)

   2015-11-03 0
核心提示:这篇文章主要介绍了OC - 9.基于Quartz2D绘制下载进度条(demo)的相关资料,需要的朋友可以参考下

效果图

OC - 9.基于Quartz2D绘制下载进度条(demo)

实现思路

要实现绘图,通常需要自定义一个UIView的子类,重写父类的- (void)drawRect:(CGRect)rect方法,在该方法中实现绘图操作
若想显示下载进度,只需要实例化自定义子类的对象(若是storyboard中控件,只需修改控件的class属性为自定义子类的类名即可)

OC - 9.基于Quartz2D绘制下载进度条(demo)

效果图所示的效果其实是绘制一个圆弧,动态的改变终点的位置,最终达到一个封闭的圆

中间的文字是一个UILabel控件,根据进度动态改变文字的现实

实现步骤

自定义一个UIView的子类

//提供一个成员属性,接收下载进度值

@property (nonatomic, assign) CGFloat progress;

重写成员属性progress的setter

//每次改变成员属性progress的值,就会调用它的setter
- (void)setProgress:(CGFloat)progress
{
 _progress = progress;
 //当下载进度改变时,手动调用重绘方法
 [self setNeedsDisplay];
}

重写- (void)drawRect:(CGRect)rect(核心)

- (void)drawRect:(CGRect)rect
{
 //设置圆弧的半径
 CGFloat radius = rect.size.width * 0.5;
 //设置圆弧的圆心
 CGPoint center = CGPointMake(radius, radius);
 //设置圆弧的开始的角度(弧度制)
 CGFloat startAngle = - M_PI_2;
 //设置圆弧的终止角度
 CGFloat endAngle = - M_PI_2 + 2 * M_PI * self.progress;
 //使用UIBezierPath类绘制圆弧
 UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius - 5 startAngle:startAngle endAngle:endAngle clockwise:YES];
 //将绘制的圆弧渲染到图层上(即显示出来)
 [path stroke];
}
 
标签: oc 进度条 ios quartz2d
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 一种视频预加载的方案
    一种视频预加载的方案
    前言:视频的预加载是提高用户体验的重要因素。预加载成为网络视频播放不可或缺的一个技术环节。 预加载的形式: 1.边存边播:下载多少播放多少。优点:快速加载播放,实现简单;缺点:不能拖动未存区域;适合音频媒体2.代理服务器:预先下载媒体的头部(头部
  • Android Process
    Android Process
    一个应用使用了多进程相当于两个不同的应用使用了SharedUID模式,能访问data目录,组件数据库之类的,但是不能共享内存里的数据(变量)。?xml version=1.0encoding=utf-8?manifestxmlns:android=http://schemas.android.com/apk/res/androidpackage=com.bigm
    12-01 安卓开发
  • Android自定义组合控件:SherlockSpinner
    Android自定义组合控件:SherlockSpinner
    如果你觉得从头开始自定义一个View比较麻烦,那么组合几个系统现有控件来实现需求的功能,会是你很好的一个选择。一、前言 最近在项目中,需要使用Spinner来实现下拉选择功能,UI方面倒是要求不多。但是难点在于一个界面中有多个Spinner,并且有联动关系,数
    11-22 安卓开发
  • NJAS Sandboxing Unmodified Applications in Non-rooted Devices Running Stock Android
    NJAS Sandboxing Unmodified Applications in N
    论文下载 简介这篇文章提出了一种不修改系统,不需要ROOT,不重打包来制造一个沙盒的工具–NJAS(Not Just Another Sandbox)特点 executing an Android application within the context of another one1 achieves sandboxing by means of system call interpos
    11-16 安卓开发
  • 深入分析ThreadLocal
    欢迎转载,但请务必在明确位置注明文章出处! http://johnnyshieh.github.io/android/2016/11/02/explore-threadlocal/这篇文章主要分析Android中的ThreadLocal原理以及相关问题, 也分析与其在Java中内部实现的区别, 让大家理解ThreadLocal的使用场景与正确使
  • 使用WakeLock使Android应用程序保持后台唤醒
    需求:要在后台跑一个Service执行轮询,屏幕熄灭或锁屏后,仍然需要保持Service一直处于轮询状态。在使用一些产品列如微信、QQ之类的,如果有新消息来时,手机屏幕即使在锁屏状态下也会亮起并提示声音,这时用户就知道有新消息来临了。但是,一般情况下手机锁
    10-31 安卓开发
  • 在 Android Studio 中使用 Annotation Processor
    在 Android Studio 中使用 Annotation Processo
    Java 的 Annotation Processor 是非常有用的功能,很多常用的库和框架都使用了 Annotation Processor 来生成代码,比如 Butter Knife 就用来生成 findViewById 等代码。对于一些模板代码使用 Annotation Processor 来自动生成可以提高编写代码的效率和质量,
  • Google Play 改变关于 location.gps feature 的设定
    Google Play 改变关于 location.gps feature 的
    21号收到一封 Google Play 发来的邮件,告知如下信息: Hello Google Play Developer,We're writing to let you know that the apps listed at the end of this email may be affected by an upcoming platform change.Action required: If your app requires
    09-24 安卓开发
  • Android:一起学会超好用图表控件 HelloCharts
    Android:一起学会超好用图表控件 HelloCharts
    写在前面 很早以前就想学习一些图表控件的实现,但一直被耽搁。现在毕设项目里有一个统计模块,所以不得不学了。找控件没花多大力气,不过确实在 MPAndroidChart 和 HelloCharts 之间犹豫了一会。不过简单对比来看,还是 HelloCharts 比较容易实现,也有很多
  • [原]cocos2dx 2.13 android studio配置
    首先设置环境变量进入cocos2dx的源码根目录下,运行:python setup.py再编译android studio工程cocos2dx 的管网上有android studio的配置教程:http://cocos2d-x.org/docs/installation/Android-Studio/但如果你信了就上当了,照它来,不能正确运行app。其原
点击排行