iOS-自定义画圆、扇形、圆弧
iOS-自定义画圆、扇形、圆弧
自定义画圆、扇形、圆弧的UIView
ZJQView03.h
#import <UIKit/UIKit.h> #define PI 3.14159265358979323846 @interface ZJQView03 : UIView @end
ZJQView03.m
#import "ZJQView03.h" @implementation ZJQView03 -(instancetype)initWithFrame:(CGRect)frame{ self=[super initWithFrame:frame]; if(self) {} return self; } -(void)drawRect:(CGRect)rect{ //An opaque type that represents a Quartz 2D drawing environment. //一个不透明类型的Quartz 2D绘画环境,相当于一个画布,你可以在上面任意绘画 CGContextRef context = UIGraphicsGetCurrentContext(); //void CGContextAddArc(CGContextRef c,CGFloat x, CGFloat y,CGFloat radius,CGFloat startAngle,CGFloat endAngle, int clockwise) //1弧度=180°/π (≈57.3°) 度=弧度×180°/π 360°=360×π/180 =2π 弧度 //x,y为圆点坐标,radius半径,startAngle为开始的弧度,endAngle为 结束的弧度,clockwise 0为顺时针,1为逆时针。 //CGContextDrawPath方法的第2个参数: //kCGPathFill:填充; //kCGPathEOFill表示用奇偶规则, //kCGPathStroke路径, //kCGPathFillStroke路径填充, //kCGPathEOFillStroke表示描线,不是填充 //画扇形 CGContextMoveToPoint(context, 60, 60);//移动画笔到指定坐标点 UIColor* aColor = [UIColor colorWithRed:1 green:0.0 blue:0 alpha:1];//红色 CGContextSetFillColorWithColor(context, aColor.CGColor);//填充颜色 CGContextAddArc(context, 60, 60, 40, 0, 1.5*PI, 0); //添加一个圆 CGContextDrawPath(context, kCGPathFill); //填充路径 //画圆 UIColor* bColor = [UIColor colorWithRed:1 green:0.0 blue:0 alpha:1];//红色 CGContextSetFillColorWithColor(context, bColor.CGColor);//填充颜色 CGContextAddArc(context, 60, 160, 40, 0, 2*PI, 0); //添加一个圆 CGContextDrawPath(context, kCGPathFill); //填充路径 //画弧线 CGContextSetRGBStrokeColor(context,0,0,1,1.0);//画笔线的颜色:这里是蓝色 //也可以使用CGContextSetStrokeColorWithColor方法:就可以用UIColor颜色参数 //CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); CGContextSetLineWidth(context, 5.5);//线的宽度 CGContextAddArc(context, 60, 60, 41, 1.5*PI, 0*PI, 0); //添加一个圆(弧):这里起点弧为1.5*PI,终点弧为0*PI CGContextDrawPath(context, kCGPathStroke); //绘制路径 } @end
ViewController899.h
#import <UIKit/UIKit.h> #import "ZJQView03.h" @interface ViewController899 : UIViewController { @private ZJQView03* zjqView03; } @end
ViewController899.m
#import "ViewController899.h" #import "MyLog.h" #define IOS7 [[[UIDevice currentDevice]systemVersion] floatValue] >= 7.0 //判断SDK版本号是否是7.0或7。0以上 @interface ViewController899 () @end @implementation ViewController899 - (void)viewDidLoad { [super viewDidLoad]; [self doInit]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; zjqView03.center=CGPointMake(self.view.center.x, (self.view.bounds.size.height-zjqView03.frame.origin.y)/2);//移到屏幕中心点 [MyLog logViews:self.view.window]; } -(void) doInit { //IOS7版本特殊处理 if (IOS7) { self.edgesForExtendedLayout=UIRectEdgeNone; } self.view.backgroundColor=[UIColor whiteColor]; zjqView03 = [[ZJQView03 alloc]initWithFrame:CGRectMake(0, 0, 200, 260)]; zjqView03.backgroundColor=[UIColor yellowColor]; [self.view addSubview:zjqView03]; } @end
执行效果图如下:
工程代码见附件中的demo010.zip