2016-08-01 27 views
-2

如何在ObjectiveC和Cocoa中(在macOS上,而不是在iOS上)在半圓中繪製冒泡圖案?目前,我能夠做一個非常簡單的循環,適合我的需求是這樣的:如何在ObjectiveC和Cocoa for macOS中繪製半圓形的冒泡圖案?

NSRect rect = CGRectMake(location.x, location.y, 2*radius, 2*radius) 
rect.cornerRadius = radius 

這使得一個完整的圓,但我要如何做一個半圓,在完全陰影?我現在用畫圈的這種特殊的方法的原因是因爲它很容易,我要加上「矩形」的CAShapeLayer的框架,這是

[[self layer] addSublayer:rect]; 

需要在那裏自我指的說法,目前的CocoaView。

例子:

semicircle

最後,這需要在覈心動畫來完成,而不是與iOS的框架(如標籤暗示)。

+2

你說的意思是「劃泡在半圓「?你想繪製一個圓的一部分(圓弧),但不是整圓?或者更橢圓形的東西?底線,也許你可以編輯你的問題,分享圖片或你的意思。在回答你的問題時,你可以創建一個'NSBezierPath'和'stroke'(例如,在自定義'NSView'子類的'drawRect'中)。或者你可以創建'CGPathRef'並將其設置爲'CAShapeLayer'的路徑。但路徑的細節完全取決於這個「冒泡」的樣子。 – Rob

+0

@ Rob - 我添加了一個更好的解釋與「冒泡」的圖片。 –

回答

1

這是使用UIBezierPath繪製圓弧的代碼。 這不正是你想要的,但如果你想這樣做核芯顯卡,您可以更改半徑

 - (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]; 
    } 

- (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); 
} 

enter image description here

+0

偉大的答案!我對Cocoa仍然陌生,所以在包含drawRect的文件中,我應該添加哪個import或include語句(對於任一答案)?此外,你的圖像顯示一個沒有填充的半圓(就像答案中描繪的半圓)。我該如何填寫它? –

+0

您將需要@import UIKit才能使用UIBezierPath,這裏是鏈接https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIBezierPath_class/index.html#//apple_ref/occ/cl/ UIBezierPath –

+0

此外,您顯示的圖像是一個半圓,絕對不會填充,就像我答案中的半圓。請確保你的答案以這種方式反映了我的形象。 –