`
stephen830
  • 浏览: 2961539 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 

 

 

 

 

 

  • 大小: 52.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics