2016-08-01 3 views
-2

ObjectiveCとCocoa(iOSではなくmacOS上で)に半円で泡を描くにはどうすればよいですか?現在、私はこのような私のニーズに合った、非常に単純な円作ることができています:ObjectiveCとMacOS用のCocoaで、半円で泡を描くにはどうしたらいいですか?

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

をこれが完全な円になりますが、どのように私は完全に影、半円を作るのですか?私は自分が参照する

[[self layer] addSublayer:rect]; 

がかかるという議論は、あるCAShapeLayerのフレームに「RECT」を追加することが容易であるので、私は円を描くのこの特定の方法を使用しています理由は、現在のCocoaView。

例:(タグが示すように)

semicircle

最後に、これはないiOSのフレームワークと、Core Animationの中で行われる必要があります。

+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

UIBezierPathを使用するには、UIKitをインポートする必要があります。https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIBezierPath_class/index.html#//apple_ref/occ/cl/ UIBezierPath –

+0

また、あなたが示したイメージは、私の答えの半円のように、必ず記入されていない半円です。あなたの答えがこのように私のイメージを反映していることを確認してください。 –

関連する問題