一:效果如图:

二:代码

#import "ViewController.h"
#import "ProgressView.h" @interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *valueTitle;
@property (weak, nonatomic) IBOutlet ProgressView *progressView; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)valueChange:(UISlider *)sender { //获取进度值
NSLog(@"%f",sender.value);
//%在stringWithFormat有特殊的含义,不能直接使用,如果想要使用用两个%代表一个%
self.valueTitle.text = [NSString stringWithFormat:@"%.2f%%",sender.value * ]; self.progressView.progressValue = sender.value; } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

1.搭建界面.

2.拖动滑竿的时候让他里面的能够跟着我的拖动,数字在改变.

数字改变时有一个注意点, 就是要显示%,它是一个特殊的符号,要用两个%%代表一个%

3.拖动滑竿的时候就是在上面画弧.

从最上面,按顺时针画,所以,它的起始角度是-90度.结束角度也是-90度

也是从起始角度开始画,

起始角度-90度, 看你下载进度是多少

假如说你下载进度是100,就是1 * 360度

也就是说这个进度占你360度多少分之一

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGPoint center = CGPointMake(50, 50);

CGFloat radius = rect.size.width * 0.5;

CGFloat startA = -M_PI_2;

CGFloat endA = -M_PI_2 + M_PI * 2 * progress;

UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center

radius:radius

startAngle:startA

endAngle:endA

clockwise:YES];

要获得Progress的值,这个进度值没有, 所以要传进来才能画.弄一个成员变量

要在值改变的时候就要传进来.

要拿到ProgressView才能够传进来,所以要拖线,拿到ProgressView

所有都做好的, 发现没有画圆孤?

为什么?

问题:drawRect方法总共调用多少次?

总共就调用一次, 第一次Progress为0,以后都不会执行了

解决:每次传的时候,就要画一次,

重写Progress方法

-(void)setProgress:(CGFloat)progress{

_progress = progress;

手动调用drawRect方法, 让它重新绘制

[self drawRect:self.bounds];

}

运行发现还是不画,为什么?

原因:drawRect方法是不能手动调用,因为在drawRect方法中才能获取跟View相关联的上下文

系统在调用DrawRect方法时,会自动帮你创建一个跟View相关联的上下文,并且传递给它.

自己调用的,没有给drawRect方法传递上下文.所以在draw方法中拿不到上下文.

解决办法:想要重绘,调用[self setNeedsDisplay];

告诉系统重新绘制View,系统就会自动帮你调用drawRect方法,系统在调用

drawRect方法,它会帮你创建上下文

iOS开发Quartz2D 三 进度条的应用的更多相关文章

  1. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  2. XMPPFrameWork IOS 开发(三)登录

    原始地址:XMPPFrameWork IOS 开发(三) XMPP中常用对象们: XMPPStream:xmpp基础服务类 XMPPRoster:好友列表类 XMPPRosterCoreDataSto ...

  3. iOS开发 - Quartz2D画图

    Quartz 2D简单介绍 是一个二维画图引擎,同一时候支持iOS和Mac系统 Quartz 2D能完毕的工作 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...

  4. 【iOS】环形渐变进度条实现

    之前有人在找渐变进度条的效果,闲来无事就顺手写了一个,然后画了视图层级,方便讲解. 环境信息: Mac OS X 10.10.3 Xcode 6.3.1 iOS 8.3 效果图: 源码下载地址: ht ...

  5. 从零开始学ios开发(三):第一个有交互的app

    感谢大家的关注,也给我一份动力,让我继续前进.有了自己的家庭有了孩子,过着上有老下有小的生活,能够挤出点时间学习真的很难,每天弄好孩子睡觉已经是晚上10点左右了,然后再弄自己的事情,一转眼很快就到12 ...

  6. iOS UIWebView 加载进度条的使用-WKWebView的使用,更新2017.6.26

    1.由于项目中加载网络插件,直接使用了webview加载.使用了三方NJKWebViewProgress进度条的使用,近期在测试时发现,网络缓慢时出现白屏,有卡顿现象. 于是采用了WKWebView进 ...

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

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

  8. iOS WKWebView 加载进度条、导航栏返回&关闭 (Swift 4)

    导航: 1.加载进度条 2.导航栏增加返回.关闭按钮 加载进度条 效果图 代码如下: self.progressView.trackTintColor = UIColor.white self.pro ...

  9. Vue项目开发,nprogress进度条加载之超详细讲解及实战案例

    Nprogress的默认进度条很细,它的设计灵感主要来源于 谷歌,YouTube 他的安装方式也很简单,你可以有两种使用方式: 直接引入js和css文件 使用npm安装的的方式 直接引入: Npm安装 ...

随机推荐

  1. Qt样式表——选择器详解(父子关系)

    在上一节中,小豆君给大家介绍了样式表的基本概念和大致用法.今天我们来详细了解下样式表中选择器的用法. 所谓选择器,就是指定你所设置的样式对哪个或哪些控件起作用. 到目前为止,Qt样式表支持CSS2中定 ...

  2. bind()和trigger()额外数据

    $(function(){ $('input').click(function(e,data1,data2,data3,data4){ alert(data1 + '|' + data2 + '|' ...

  3. NOI2005维修数列(splay)

    题目描述: Description 请写一个程序,要求维护一个数列,支持以下 6 种操作: 请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格 Input 输入的第1 行包含两个数N 和M( ...

  4. viewPager-基本实现示例

    直接看代码 package com.example.myviewpager; import android.app.Activity; import android.os.Bundle; import ...

  5. poi完美word转html(表格、图片、样式)

    直入正题,需求为页面预览word文档,用的是poi3.8,以下代码支持表格.图片,不支持分页,只支持doc,不支持docx: /** * */ import java.io.BufferedWrite ...

  6. C#程序集引入无效的解决方法

    在项目类库中已经引用了相关了类库,生成解决方案也没问题,但是到了后置代码,通过using引用其他类库的时候,再生成解决方案或者生成单个类库,就会报“未能找到类型或命名空间“xxx"(是否缺少 ...

  7. PythonNET网络编程4

    本地套接字 Linux 文件 b(块设备文件) c(字符设备文件) d(目录) -(普通文件) l(链接) s(套接字) p(管道) 作用:用于本地不同的程序间进行通信 创建流程 创建本地套接字 so ...

  8. 国密算法SM2证书制作

    国密算法sm2非对称算法椭圆曲线 原文:http://www.jonllen.cn/jonllen/work/162.aspx 前段时间将系统的RSA算法全部升级为SM2国密算法,密码机和UKey硬件 ...

  9. 【习题 3-9 UVA - 10340】All in All

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 相当于让你判断s1是不是s2的子序列. for一遍就好 [代码] #include <bits/stdc++.h> us ...

  10. [Angular] Reactive Store and AngularFire Observables

    A simple store implemenet: import { Observable } from 'rxjs/Observable'; import { BehaviorSubject } ...