2012-05-13 22 views
1

Objective-CのNSRect要素に丸みのあるコーナーを追加する簡単な方法はありますか?現在、我々はこれにコーナーをシミュレートしたPNG画像を適用している:Core Animationのでレンダリングされた画像と一緒にこのNSRectの多くのインスタンスがあるのでNSRectの角を丸く

NSRect newFrame = NSMakeRect(0, 0, size.width, size.height); 

はしかし、パフォーマンスが問題となります。おそらく、エッジを丸めたネイティブNSRectをレンダリングすることは、パフォーマンスの観点からは良いでしょうか? Core Animationでレンダリングしたときに、エッジがスムーズ(アンチエイリアス処理)されていますか?

+0

NSRectはNS_RECT_angleを描画します。 NSBézierPathを使用します。 – CodaFi

+0

@CodaFi:画像を使わないことを計画していても? – Zakman411

+0

私は悪いですが、私はiOS-itisを持っています。コメントを更新しました。 – CodaFi

答えて

2

NSRectはNSPointとNSSizeを含む構造体なので、NSRects(NSViewのサブクラス)を受け入れるものは何でもいいと思います。すべてのNSViewサブクラスのレイヤーは、-cornerRadiusに適切に応答します(NSScrollViewについては例外です)。

self.view.layer.masksToBounds = YES; 
self.view.layer.cornerRadius = 10.0; 
+0

@Zakman - あなたのプロジェクトに 'CoreGraphics'フレームワークを追加することを忘れないでください。 – Sreeram

+0

偉大な、私はこれはショットの感謝を与えるよ!私たちが現在持っているように、20〜30のインスタンスがある場合、Core AnimationはマスクされたNSRectをNSImageよりも効率的にレンダリングすると思いますか?ネイティブにNSRectをレンダリングすることで、フレームレートが向上することを期待しています。 – Zakman411

+0

これはCALayerの機能です。 – CodaFi