通过布赛尔曲线以及CAShapeLayer的strokeStart 、strokeEnd 属性来实现一个圆形进度条
#import <UIKit/UIKit.h> @interface CircleProgressView : UIView /**起始值(0-1)*/
@property(nonatomic,assign)CGFloat fstartValue; /**边框宽度*/
@property(nonatomic,assign)CGFloat flineWidth; /**线条颜色*/
@property(nonatomic,strong)UIColor *lineColor; /**变化的值*/
@property(nonatomic,assign)CGFloat fvalue;
@end
#import "CircleProgressView.h"
@interface CircleProgressView ()
{
CAShapeLayer *_shapeLayer;
}
@end
@implementation CircleProgressView
@synthesize fstartValue=_fstartValue;
@synthesize flineWidth=_flineWidth;
@synthesize lineColor=_lineColor;
@synthesize fvalue=_fvalue; - (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
/**创建带形状的图层*/
_shapeLayer=[CAShapeLayer layer];
_shapeLayer.frame = self.bounds;
_shapeLayer.strokeEnd = .f; /*创建布赛尔曲线*/
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.bounds]; /**把图层和不塞尔曲线通过path进行关联*/
_shapeLayer.path = path.CGPath; /**设置图层的填充颜色、宽度、边框颜色*/
_shapeLayer.fillColor = [UIColor clearColor].CGColor;
_shapeLayer.lineWidth = 1.0f;
_shapeLayer.strokeColor = [UIColor redColor].CGColor; [self.layer addSublayer:_shapeLayer];
}
return self;
}
/**
* @brief 重写fstartValue的setter方法
* @param fstartValue 设置圆形strokeStart起始值
* @since
*/
- (void)setFstartValue:(CGFloat)fstartValue
{
_fstartValue = fstartValue;
_shapeLayer.strokeStart = fstartValue; }
- (CGFloat)fstartValue
{
return _fstartValue;
}
/**
* @brief 重写flineWidth的setter方法
* @param flineWidth 设置圆形边框宽度
* @since
*/ - (void)setFlineWidth:(CGFloat)flineWidth
{
_flineWidth = flineWidth;
_shapeLayer.lineWidth = flineWidth;
}
/**
* @brief 重写lineColor的setter方法
* @param lineColor 设置圆形边框颜色
* @since
*/ - (void)setLineColor:(UIColor *)lineColor
{
_lineColor = lineColor;
_shapeLayer.strokeColor = lineColor.CGColor;
}
- (UIColor *)lineColor
{
return _lineColor;
}
/**
* @brief 重写fvalue的setter方法
* @param lineColor 设置圆形的strokeEnd值
* @since
*/
- (void)setFvalue:(CGFloat)fvalue
{
_fvalue = fvalue;
_shapeLayer.strokeEnd = fvalue;
} - (CGFloat)fvalue
{
return _fvalue;
}
@end
#import "ViewController.h"
#import "CircleProgressView.h"
@interface ViewController ()
{
CircleProgressView *progress;
}
@end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad]; progress = [[CircleProgressView alloc]initWithFrame:CGRectMake(, , , )];
progress.center = self.view.center;
progress.lineColor = [UIColor redColor];
progress.flineWidth = 1.0f;
progress.fstartValue = ;
[self.view addSubview:progress];
[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(circleAnimation) userInfo:nil repeats:YES]; }
- (void)circleAnimation
{
progress.fvalue = arc4random()%/.f;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning]; } @end
通过布赛尔曲线以及CAShapeLayer的strokeStart 、strokeEnd 属性来实现一个圆形进度条的更多相关文章
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
通过CAShapeLayer和贝塞尔曲线搭配的方法,创建的简单的圆形进度条的教程先简单的介绍下CAShapeLayer1,CAShapeLayer继承自CALayer,可使用CALayer的所有属性2 ...
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画【装载】
初次接触CAShapeLayer和贝塞尔曲线,看了下极客学院的视频.对初学者来说感觉还不错.今天来说一个通过CAShapeLayer和贝塞尔曲线搭配的方法,创建的简单的圆形进度条的教程先简单的介绍下C ...
- CAShapeLayer实现圆形进度条效果
一.CAShapeLayer简单介绍: .CAShapeLayer继承至CALayer,能够使用CALayer的全部属性值 2.CAShapeLayer须要与贝塞尔曲线配合使用才有意义 3.使用CAS ...
- IOS贝塞尔曲线圆形进度条和加载动画
做项目让做一个加载动画,一个圈圈在转中间加一个图片,网上有好多demo,这里我也自己写了一个,中间的图片可加可不加.其中主要用到贝塞尔曲线.UIBezierPath是对CGContextRef的进一步 ...
- IOS开发基础篇--CAShapeLayer的strokeStart和strokeEnd属性
http://blog.csdn.net/yixiangboy/article/details/50662704 一.案例演示 最近有一个小需求,就是要做一个圆形进度条,大概样子如下: . 在不知道有 ...
- 贝塞尔曲线与CAShapeLayer的关系以及Stroke动画
1.贝塞尔曲线与CAShapeLayer的关系 1.1CAShapeLayer须要一个形状才干生效,贝塞尔曲线能够创建基于矢量的路径.进而能够给CAShapeLayer提供路径,路径会闭环. ...
- 利用贝塞尔曲线绘制(UIBezierPath)自定义iOS动态速度表,可以自定义刻度,刻度值,进度条样式
GitHub的Demo下载地址 使用UIBezierPath画图步骤: 创建一个UIBezierPath对象 调用-moveToPoint:设置初始线段的起点 添加线或者曲线去定义一个或者多个子路径 ...
- HslControls组件库 工业控件库 曲线控件 时间控件 管道控件 温度计控件 阀门控件 传送带控件 进度条控件 电池控件 数码管控件等等
本篇博客主要对 HslControls 组件做一个大概的总览介绍,更详细的内容可以参照页面里的子链接,还有github上的源代码,然后进行相关的学习,和使用. Prepare 先从nuget下载到组件 ...
- DevExpress的进度条控件ProgressBarControl的使用-以ZedGraph添加曲线进度为例
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
随机推荐
- Collection Operators
[Collection Operators] Collection operators are specialized key paths that are passed as the paramet ...
- Type Encoding
[Type Encodings] The compiler encodes the return and argument types for each method in a character s ...
- C++拓扑排序
安利一篇比较写的比较好的的博客... 拓扑排序的原理及其实现 我本来以为我看懂了原理就会打了,没想到因为没有手动实践过...原理实际上也没记清楚.... 一题HDU的拓扑裸题HDU 3342 我的拓扑 ...
- 接口是干爹, 继承是亲爹 ---JAVA
接口(interface)是干爹, 因为你可以有很多很多的干爹爹... 继承(extends)是亲爹, 因为你只能有一个父类, 只有一个亲生的父亲. 单继承,多接口?./>./..
- sql server中的decimal或者numeric的精度问题
何谓精度:最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数.该精度必须是从 1 到最大精度 38 之间的值.默认精度为 18. 小数位数:小数点右边可以存储的十进制数字的最大位数.小数位数 ...
- thinkphp框架 查询语言
thinkphp框架 查询语言 EQ 等于 (=) NEQ 不等于 (!=) GT 大于 (>) EGT 大于等于 (>=) LT ...
- hdoj 5349 MZL's simple problem
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5349 #include<stdio.h> int main(){ int cnt; int ...
- libevent中定时器的使用方法
#include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <signal.h ...
- 正确理解ContentPresenter
下图显示继承关系: ContentControl:Control (在Control類並沒有Content屬性, 所以在這之上再寫了一個ContentControl, 使控件有Content屬性可以顯 ...
- 一个模拟"显示桌面.scf"程序的JS小函数
有时候我们或许有这样的一个需求,用JS模拟这样一个动作,同时按下组合快捷键:Windows旗帜键+D键,下面这个函数就可以帮到我们了. function f_ToggleDesktop() { var ...