iOS-自定义的画圆或弧的UIView
CustomViewOfCircle.h
#import <UIKit/UIKit.h> @interface CustomViewOfCircle : UIView { //是否自定义属性:myDot BOOL isDefinedMyDot; //是否自定义属性:myRadius BOOL isDefinedMyRadius; //是否自定义属性:myAngle BOOL isDefinedMyAngle; //是否自定义属性:MyLineWidth BOOL isDefinedMyLineWidth; //是否自定义属性:MyClockWise BOOL isDefinedMyClockWise; } //圆圈或弧线的边线的颜色,默认为黑色 @property (nonatomic,strong) UIColor* myStrokeColor; //线的宽度,默认为1.0 @property (nonatomic,assign) CGFloat myLineWidth; //圆圈或弧线的圆周中心点坐标,默认为当前视图的中心点,即(self.frame.size.width/2,self.frame.size.height/2) @property (nonatomic,assign) CGPoint myDot; //圆圈或弧线的半径,默认采用当前视图尺寸(self.frame.size)来计算半径 //计算规则: //如果 self.frame.size.width > self.frame.size.height , //那么 半径=self.frame.size.height/2 //否则 半径=self.frame.size.width/2 //也就是取高、宽中值小的那个的1/2作为半径 @property (nonatomic,assign) CGFloat myRadius; //圆圈或弧线的范围,用弧度来计算,圆一周总弧度为2*PI(即360度角)。默认值为(0,2*PI) //angle.x :弧线起点的弧度 //angle.y :弧线终点的弧度 // // // ^ 1.5*PI弧度 // | // | // | // | // | // 1*PI弧度 | // -------------------------------->0弧度(2*PI弧度) // | // | // | // | // | // |0.5*PI弧度 // // // // @property (nonatomic,assign) CGPoint myAngle; //画弧线方向,为0表示顺势正,为1表示逆时针,默认值为0. //方向不同,画出的弧线也会不同,例如: //假设 参数myAngle定义为(0 , 0.5*PI) //如果 参数myClockWise=0,即将从上图中0弧度开始,沿顺时针方向画弧线到0.5*PI弧度位置,即画了一条90度角的弧线 //如果 参数myClockWise=1,即将从上图中0弧度开始,沿逆时针方向经过1.5*PI弧度、1*PI弧度,然后一直画弧线到0.5*PI弧度位置,相当于画了一条270度角的弧线 @property (nonatomic,assign) int myClockWise; @end
CustomViewOfCircle.m
#import "CustomViewOfCircle.h" #define PI M_PI //圆周率常量 #define default_start_angle 0.0 //默认起始弧度 #define default_end_angle 2*PI //默认终点弧度 #define default_line_width 1.0 //默认线宽 @implementation CustomViewOfCircle #pragma mark --------------->系统方法区<--------------- -(instancetype)init{ self=[super init]; if(self){ } return self; } -(void)drawRect:(CGRect)rect{ //圆心坐标点 if (!isDefinedMyDot) { _myDot.x =self.frame.size.width/2; _myDot.y =self.frame.size.height/2; } //圆半径 if (!isDefinedMyRadius) { _myRadius=(self.frame.size.width>self.frame.size.height)?self.frame.size.height/2:self.frame.size.width/2; } //弧度 if (!isDefinedMyAngle) { _myAngle.x=default_start_angle; _myAngle.y=default_end_angle; } //线宽 if (!isDefinedMyLineWidth) { _myLineWidth=default_line_width; } //方向 if (!isDefinedMyClockWise) { _myClockWise=0; } CGContextRef context = UIGraphicsGetCurrentContext(); //画弧线 CGContextSetStrokeColorWithColor(context, _myStrokeColor.CGColor); CGContextSetLineWidth(context, _myLineWidth);//线的宽度 CGContextAddArc(context, _myDot.x, _myDot.y, _myRadius, _myAngle.x, _myAngle.y, _myClockWise); CGContextDrawPath(context, kCGPathStroke); //绘制路径 } #pragma mark --------------->自定义属性方法区<--------------- -(void)setMyCircleDot : (CGPoint) myCircleDot{ _myDot.x=myCircleDot.x; _myDot.y=myCircleDot.y; isDefinedMyDot=YES; } -(void)setMyRadius:(CGFloat)myRadius{ _myRadius=myRadius; isDefinedMyRadius=YES; } -(void)setMyAngle:(CGPoint)myAngle{ _myAngle.x=myAngle.x; _myAngle.y=myAngle.y; isDefinedMyAngle=YES; } -(void)setMyLineWidth:(CGFloat)myLineWidth{ _myLineWidth=myLineWidth; isDefinedMyLineWidth=YES; } -(void)setMyClockWise:(int)myClockWise{ _myClockWise=myClockWise; isDefinedMyClockWise=YES; } @end
具体调用方法:
#import "ViewController894.h" #import "CustomViewOfCircle.h" @interface ViewController894 () @end @implementation ViewController894 - (void)viewDidLoad { [super viewDidLoad]; [self _drawCircle]; } - (void)_drawCircle { //define CustomViewOfCircle CustomViewOfCircle* cvCircle = [[CustomViewOfCircle alloc] init]; cvCircle.frame=CGRectMake(50, 100, 200, 200); cvCircle.backgroundColor=[UIColor whiteColor]; //设置弧线颜色 [cvCircle setNewStrokeColor:[UIColor redColor]]; //设置半径 [cvCircle setNewRadius:cvCircle.frame.size.width/2-10]; //设置线宽 [cvCircle setNewLineWidth:2.0]; //设置弧线起点、终点弧度 [cvCircle setNewAngle:CGPointMake(0.0*M_PI,1.5*M_PI)]; //设置画弧线方向 [cvCircle setNewClockWise:1]; //add subview [self.view addSubview:cvCircle]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end
起始弧度 0,终点弧度 0.5*PI ,逆时针方向
起始弧度 0,终点弧度 0.5*PI ,顺时针方向
相关推荐
一句代码设置UIView及其子类的badgeValue,默认右上角显示 cocoaChina 上传代码比较麻烦,如果有什么问题或者添加什么功能,欢迎大家去我简书留言http://www.jianshu.com/p/497b33250ec1 喜欢的话可以关注我,...
使用ffmpeg软解码视频数据,SDL_audio播放音频数据,SDL_thread管理线程,openGL渲染YUV420数据到UIView。项目太大,自行到github下载。
- (id)initWithParentView:(UIView *)parentView DefaultColor:(UIColor *)color frame:(CGRect)frame; 方法创建对象 添加了点击弹出show 若想添加滑动动画 创建时执行addPanForView
通过自定义UIView,实现PageControl的功能,有问题可以通过qq:1205632644联系我。
自定义tabBar,完全移除系统的tabBar,创建button继承于UIView
改变系统tabBar太复杂? 为什么不自定义tabBar呢? 继承法自定义tabBar,想...附赠上图下文字的封装以及UIView延展 ,喜欢的朋友拿去 注:使用时先导入PCH, 在setting里面输入prefix 把pch拖入即可 不明可以百度
写了一个继承于UIView的按钮,来代替系统按钮
好程序员学习笔记--UI基础UIWindow、UIView.doc
继承UIView,添加标签显示数据,减按钮,加按钮
文章简介:http://www.jianshu.com/p/f18eb84e213f 最新代码地址:https://github.com/liuxinixn/LXViewShadowPath
- [iOS动画和特效(一)UIView动画和CoreAnimation](http://liuyanwei.jumppo.com/2015/10/30/iOS-Animation-UIViewAndCoreAnimation.html) - [iOS动画和特效(二)UIKit力学行为]...
比较行的自定义NavigationController,抛弃隐藏原生NavigationBar,使用自定义View的方式,通过修改视图的加载,已经对原生方法的重写,达到与原生一样的业务跳转,代码部分参考JTNavigationController,和...
RTLabel-master,继承了UIView,重新写了一个Label。便于我们对Label的各种属性进行设置
iOS Object-C 自定义封装成 和 UITabBarView一样的功能。主要体现在 UITabBar样式上,可以随意修改 继承UITabBarController 写的 管理切换控制器 主要是写 UITabBar样式是 继承UIView
iOS-7-Custom-ModalViewController-Transitions, 在 iOS 7中,实现新的自定义ModalViewController转换的示例项目 iOS-7-Custom-ModalViewController-Transitions在 iOS 7上实现新定制ModalViewController过渡的示例...
使用ffmpeg在iOS端视频实现解码 实现mov视频转化yuv格式
很简单的一个进度条需求。 利用UIView写的。 具体参照demo,so easy!
AddJackTemplates - xcode定制文件模板,UIView绑定xib一键生成,统一头文件标题样式
-uiview动画 -CoreAnimation基本动画 -关键帧动画 -TransferAnimation 文章对应的开发说明 http://liuyanwei.jumppo.com/2015/10/30/iOS-Animation-UIViewAndCoreAnimation.html 如果大家支持,请在github...
简单的转场动画,包括高仿QQ电话路径动画 CABasicAnimation动画等动画组合(想了解动画的童鞋可以研究研究)、常见的气泡转场动画(UIView动画,好多项目都在用哦)、以及翻页转场、模拟系统的导航、模态动画(对想...