1、在DrawCircle.h文件中

  提供了接口,在使用的时候,可以设定圆心、半径、角度、圆环的宽度、圆环的背景底色、圆环的进度条颜色,当然后面三个有自定义的值。

//

//  DrawCircle.h

//  Demo-draw

//

//  Created by yyt on 16/5/10.

//  Copyright © 2016年 yyt. All rights reserved.

//

#import <UIKit/UIKit.h>

@interface DrawCircle : UIView

@property(nonatomic,assign) CGPoint centerPoint;

@property(nonatomic,assign) CGFloat radius;

@property(nonatomic,assign) CGFloat angleValue;  //圆环进度占有的角度,0~360

@property(nonatomic,assign) CGFloat lineWidth;

@property(nonatomic,strong) UIColor *bgLineColor;

@property(nonatomic,strong) UIColor *lineColor;

@end

2、在DrawCircle.m文件中

//

//  DrawCircle.m

//  Demo-draw

//

//  Created by yyt on 16/5/10.

//  Copyright © 2016年 yyt. All rights reserved.

//

#import "DrawCircle.h"

@implementation DrawCircle

- (instancetype)initWithFrame:(CGRect)frame {

self = [super initWithFrame:frame];

self.backgroundColor = [UIColor whiteColor];

self.lineWidth = 10;

self.bgLineColor = [UIColor lightGrayColor];

self.lineColor = [UIColor orangeColor];

return self;

}

- (void)drawRect:(CGRect)rect {

CGContextRef bgContextRef = UIGraphicsGetCurrentContext();

CGContextAddArc(bgContextRef, _centerPoint.x, _centerPoint.y, _radius, 0, 10, 0);

CGContextSetLineWidth(bgContextRef, _lineWidth);

[_bgLineColor setStroke];

CGContextStrokePath(bgContextRef);

CGContextRef contextRef = UIGraphicsGetCurrentContext();

CGContextAddArc(contextRef, _centerPoint.x, _centerPoint.y, _radius, M_PI/2, M_PI/2+_angleValue/180*M_PI, 0);

CGContextSetLineWidth(contextRef, _lineWidth);

[_lineColor setStroke];

CGContextStrokePath(contextRef);

}

@end

3、在需要使用圆环进度条的地方ViewController.m文件中

//

//  ViewController.m

//  Demo-draw

//

//  Created by yyt on 16/5/10.

//  Copyright © 2016年 yyt. All rights reserved.

//

#import "ViewController.h"

#import "DrawCircle.h"

@interface ViewController ()

@property(nonatomic,strong) DrawCircle *view2;

@end

@implementation ViewController

static int hehe = 30;

- (void)viewDidLoad {

[super viewDidLoad];

DrawCircle *view2 = [[DrawCircle alloc] initWithFrame:CGRectMake(100, 200, 100, 100)];

self.view2 = view2;

view2.centerPoint = CGPointMake(50, 50);

view2.radius = 30;

view2.angleValue = hehe;

view2.lineWidth = 20;

view2.lineColor = [UIColor orangeColor];

[self.view addSubview:view2];

  //进度+

UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];

button.frame = CGRectMake(100, 100, 100, 30);

button.backgroundColor = [UIColor blueColor];

[button addTarget:self action:@selector(hehe) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button];

  //进度-

UIButton *button2 = [UIButton buttonWithType:UIButtonTypeSystem];

button2.frame = CGRectMake(100, 150, 100, 30);

button2.backgroundColor = [UIColor redColor];

[button2 addTarget:self action:@selector(hehe2) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button2];

}

- (void)hehe {

hehe += 30;

self.view2.angleValue = hehe;

[self.view2 setNeedsDisplay];

}

- (void)hehe2 {

hehe -= 30;

self.view2.angleValue = hehe;

[self.view2 setNeedsDisplay];

}

@end

iOS开发——自定义进度圆环的更多相关文章

  1. iOS开发自定义字体之静态字体

    最后更新 2017-04-25 在iOS开发中经常会用到字体, 一般字体文件比较小的,单一的,几十k, 可以通过内置进去;如果字体文件比较多或者字体文件比较大,通常通过动态加载方式. 静态加载方式 将 ...

  2. iOS 开发自定义一个提示框

    在开发的时候,会碰到很多需要提示的地方,提示的方法也有很多种,ios 8 以前的版本有alertview还是以后用的alertController,都是这种作用, 但是不够灵活,而且用的多了,用户体验 ...

  3. [IOS 开发] 自定义(重写) UITableViewCell的高亮背景色

    IOS的sdk中,对UITableViewCell的高亮背景色只支持两种颜色,分别为UITableViewCellSelectionStyleBlue和UITableViewCellSelection ...

  4. iOS开发-自定义UIAlterView(iOS 7)

    App中不可能少了弹框,弹框是交互的必要形式,使用起来也非常简单,不过最近需要自定义一个弹框,虽然iOS本身的弹框已经能满足大部分的需求,但是不可避免还是需要做一些自定义的工作.iOS7之前是可以自定 ...

  5. IOS开发自定义CheckBox控件

    IOS本身没有系统的CheckBox组件,但是实际开发中会经常用到,所以专门写了一个CheckBox控件,直接上代码 效果图: UICheckBoxButton.h文件如下: #import #imp ...

  6. iOS开发自定义转场动画

    1.转场动画 iOS7之后开发者可以自定义界面切换的转场动画,就是在模态弹出(present.dismiss),Navigation的(push.pop),TabBar的系统切换效果之外自定义切换动画 ...

  7. IOS开发自定义tableviewcell的注意点😄

    自定义tableviewcell 1.xib,nib拖控件:awakefromnib: 设置2,不拖控件:- (instancetype)initWithStyle:(UITableViewCellS ...

  8. iOS开发自定义流水布局

    //集成UICollectionViewFlowLayout 自己写的布局 //  SJBFlowLayout.m //  自定义流水布局 // //  Created by zyyt on 16/7 ...

  9. iOS开发 自定义UIAlertController的样式

    引言: 关于提示框, 系统自带的提示框有时可能满足不了我们的需求, 比如一个提示框的取消按钮我需要灰色字体显示, 这时候就需要自定义提示框的样式了. 示例图 苹果自iOS8开始,就已经废弃了之前用于界 ...

随机推荐

  1. Anton and School

    Anton and School time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  2. linux视频学习6(mysql的安装/)

    1.mysql的优点: 免费,跨平台,轻,支持多并发. 2.mysql的安装步骤: 把安装文件准备好,拷贝到home目录下.mount /mnt/cdrom cp mysql* /home 把安装文件 ...

  3. word2010无法打开文件时的一点对策

    word2010无法打开文件时的一点对策 1. Word 安全模式启动,点击「开始」,在搜索栏中输入winword /safe并回车,测试问题是否依然存在? 2. 正常启动Word,点击“文件”—“选 ...

  4. 浅谈C# 多态的魅力(虚方法,抽象,接口实现)

    前言:我们都知道面向对象的三大特性:封装,继承,多态.封装和继承对于初学者而言比较好理解,但要理解多态,尤其是深入理解,初学者往往存在有很多困惑,为什么这样就可以?有时候感觉很不可思议,由此,面向对象 ...

  5. Java类锁和对象锁实践(good)

    一.前言 之前对类锁和对象锁是否是互斥的不是太确定,因此决定编写相关的程序进行实践一下.编写前对相关定义约定约定如下: 1. 类锁:在代码中的方法上加了static和synchronized的锁,或者 ...

  6. Class.forName() 初始化、Thread.currentThread().getContextClassLoader().getResourceAsStream

    Class.forName() 和 ClassLoader.loadClass()的区别? Class.forName() 和 Class.forName().NewInstance()的区别? Cl ...

  7. Git学习 -- 管理修改

    git关注的是修改,而不是文件 commit只会提交add到暂存区的修改 撤销修改 已修改但没有add到暂存区 git checkout -- <file>     #撤销工作区中的修改 ...

  8. CentOS安装VirtualBox增强工具

    安装过程中出现错误: Bulding the VirtualBox Guest Additions Kernel modules failedYour system does not seem to  ...

  9. 转:Loadrunner——Simulate a new user on each iteration设置

    最近在与大家的讨论中发现了LoadRunner的很多问题,出于解决问题的出发点,我也就相关自己不理解的问题在Google中搜索了一番,并通过一些实例也去实际操作了一遍,发现很多问题确实并不是那么难解决 ...

  10. hosts文件不显示

    1.按住windows键(就是小旗子小窗口键)+R,打开运行:2.在输入框中输入 cmd并回车:3.紧接着在dos窗口中输入"CD \WINDOWS\SYSTEM32\DRIVERS\ETC ...