2011-12-29 22 views
1

私は50%の不透明な黒い背景と白いテキストでカスタムNSButtonを作成しようとしています。これを行うには、私はNSButtonをサブクラス化のdrawRectをオーバーロードしました:半透明の背景を持つカスタムNSButton

- (void) drawRect:(NSRect)dirtyRect 
{ 

    [self setBordered:NO]; 

    //REMED since it has same effect as NSRectFill below 
    //[[self cell] setBackgroundColor:[NSColor colorWithCalibratedRed:0 green:0 blue:0 alpha:0.2]]; 

    NSColor* backgroundColor = [NSColor colorWithCalibratedWhite:0 alpha:0.3f]; 
    [backgroundColor setFill]; 
    NSRectFill(dirtyRect); 

    [super drawRect:dirtyRect]; 
} 

白のテキストが表示されます罰金が、ボタンの背景は常に100%不透明です。アルファ値は解釈されません。

アイデア?ありがとう!

答えて

3

NSRectFill()のデフォルトの動作は、コピーです。これはあなたが望むものではありません。

+0

これは機能しました! Interface BuilderのボタンでCore Animation Layerをオフにする必要がありましたが、 –

0

私が見つけたもう1つの解決策は、コードを同じに保つことですが、Interface Builderの各ボタンのコアアニメーションレイヤーをオンにすることでした。これがなぜ機能するのか知るために、Core Animation Layerについて十分に分かりません。以前はCALをオフにしていたのは、フォントが非常にギザギザに見えるためでした。

関連する問題