2013-08-23 36 views
11

基本上我需要有一個不同顏色筆畫的圓,大小相等。例如,1/2是藍色,而1/2是紅色。圖片(對不起這麼壞的形象):UIBezierPath不同筆畫的畫圈

Example

怎樣繪製這樣的事情?

+0

使用具有不同顏色的「UIBezierPath」繪製兩個單獨的弧線。 – Exploring

+0

是的,你可以做兩個或兩個以上的弧線,這取決於你需要的顏色數量。 – CodenameLambda1

回答

23

有很多方法可以做到這一點,但一個是剛剛得出兩個貝塞爾路徑,每側一個:

- (void)drawRect:(CGRect)rect 
{ 
    UIBezierPath *blueHalf = [UIBezierPath bezierPath]; 
    [blueHalf addArcWithCenter:CGPointMake(100, 100) radius:90.0 startAngle:-M_PI_2 endAngle:M_PI_2 clockwise:YES]; 
    [blueHalf setLineWidth:4.0]; 
    [[UIColor blueColor] setStroke]; 
    [blueHalf stroke]; 

    UIBezierPath *redHalf = [UIBezierPath bezierPath]; 
    [redHalf addArcWithCenter:CGPointMake(100, 100) radius:90.0 startAngle:M_PI_2 endAngle:-M_PI_2 clockwise:YES]; 
    [redHalf setLineWidth:4.0]; 
    [[UIColor redColor] setStroke]; 
    [redHalf stroke]; 
} 

或者,如果你想這樣做核芯顯卡:

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetLineWidth(context, 4); 

    CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]); 
    CGContextAddArc(context, 100, 100, 90, -M_PI_2, M_PI_2, FALSE); 
    CGContextStrokePath(context); 

    CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]); 
    CGContextAddArc(context, 100, 100, 90, M_PI_2, -M_PI_2, FALSE); 
    CGContextStrokePath(context); 
} 
+0

您可以通過使用'[[UIColor red/blueColor] setStroke]'而不是使用'CGContextSetStrokeColorWithColor(...)' – severin

+0

設置筆畫顏色而不使用CG函數來達到同意。我修改了這個來說明兩種技術。 – Rob