2017-02-04 14 views
2

普通のNSButtonは無効になっていると思われます。isEnabledがfalse(無効)のときにNSButtonを透過/シースするのを避ける

enter image description here

画像は、スタイル 'プッシュ'

は、しかし、私は透明度なしボタンを無効にするとボタンが表示されます。

私はプログラム的にalphaValue1.0に設定しようとしたが、NSButtons cell(controlView)だけでなく、他のすべてのサブビューが1.0のalphaValueにすでにあるようです。

また、userInteractionEnabledまたはadjustsImageWhenDisabled(両方ともお勧めしますhere)のようなものはありません。私はiOSのように使用できます。

標準の透過性を持たないNSButtonを無効にするにはどうすればよいですか?

EDITenter image description here

+0

通常のプッシュボタンを使用する必要がありますか?テクスチャ付き丸めボタンにはこの問題はありません。 – rocky

+0

@rocky上記の私の更新された質問を参照してください。「テクスチャープッシュ」ボタンは透明度が少し低下しているようですが、透明です。 – ixany

+0

あなたは正しいです。私は十分に頑張っていないと思う。申し訳ありません。 – rocky

答えて

0

タイトルを必要としない、そしてあなた自身のボタン画像を提供する場合は、あなたがsetImageDimsWhenDisabledにを使用することができます。ボタンは透明に表示されます。また「テクスチャプッシュ」無効にされた場合、NSButtonCellの画像の透明度を無効にしてください。ここでは、コードは次のようになります。

[buttonCell setImageDimsWhenDisabled:NO]; 

NSButtonCellNSButtonのサブビューです。しかし、私が言ったように、タイトルは少しでも薄暗くなり、背景も薄くなります。しかし、背景の上に画像がある場合、透明な背景は見えません。

別の方法(NSButtonのサブクラスを避ける)は、ボタンの独自の状態トラッキング変数を持つことです。状態が無効になっている場合は、クリックイベントを一度終了します。コードのフレームワークの例は次のとおりです。

- (IBAction)clickOnButton { 
    static BOOL isEnabled = YES; 
    if (isEnabled) { 
     // Handle click event here... 

    } 
    isEnabled = !isEnabled; 
} 

これは、クリックするとハイライトを表示することがあります。ハイライトを無効にすることもできます。しかし、これはあなたが多くのボタンを持っている場合は良い考えではありません。ボタンがたくさんある場合は、NSButtonのサブクラスが最適です。

関連する問題