2017-05-19 5 views
1

私はMacアプリケーションで作業しており、4つの丸いコーナーでカスタムNSViewが必要です。私が試したすべての結果は得られません。または、NSViewのbottonの2つのエッジだけをカーブします。 NSViewの4つのコーナーをすべてカーブする方法はありますか?NSView - setCornerRadiusは4つのコーナー全てをカーブします

カスタムクラスを作成しようとしましたが、initWithFrameメソッドを使用しましたが、これまでに何の結果も得られませんでした。

-(void)drawRect:(NSRect)dirtyRect { 
    [super drawRect:dirtyRect]; 

    [self setWantsLayer:YES]; 
    [self.layer setFrame:self.frame]; 
    [self.layer setMasksToBounds:YES]; 
    [self.layer setCornerRadius:10.0f]; 
} 

どのように私は曲線のすべての四隅をすることができます:私は、これだけのカーブボタン2つのコーナーをdrawRect方法を試してみましたか?また、Mac用の開発がiOSよりもずっと難しい理由を誰もが知っていますか?最も基本的なタスクでもカスタムクラスが必要なのはなぜですか(NSViewの背景色を設定するか、UIViewAnimationと同等のものを実行するなど)。

お時間をありがとうございました。

答えて

3

この三行は私に丸い角とのViewControllerのviewDidLoadにストーリーボードからの出口として結合型NSViewtestView赤色背景を与える、いかなるサブクラスは不要:

_testView.wantsLayer = YES; 
_testView.layer.backgroundColor = [NSColor redColor].CGColor; 
_testView.layer.cornerRadius = 10.; 

編集をこの行のためにすべてのコーナーが四捨五入されているわけではありません。

[self.layer setFrame:self.frame]; 

基本的には、この行を適切なレイヤフレームを設定し、それを必要としない:あなたが明示的に層フレームを設定したい場合は

[self setWantsLayer:YES]; 

は、あなたが違いについて

​​

読むを使用したいですframeboundsの間です。 上記のコードはdrawRect:でも動作します。

+0

私はありがとうございます。なぜサブクラス化がうまくいかなかったのか分かりませんでした。とにかく、ありがとう。 – Supertecnoboff

+1

@Supertecnoboff私の編集した答えを見てください – schmidt9

関連する問題