13

1 つの特定の NSColorWell に対して表示される NSColorPanel に不透明度スライダーを追加したいと思います。他のすべてのカラー ウェルには、不透明度スライダーが表示されません。

次のように sharedColorPanel にこれを設定できることはわかっています。

 [[NSColorPanel sharedColorPanel] setShowsAlpha:YES];

しかし、この動作を 1 つのカラー ウェルに対してのみ行いたい場合は、どうすればよいでしょうか?

IBAction を追加してみましたが、この IBAction はカラーウェルをクリックしても呼び出されません。(そのため、パネルが表示される前に変更を加えることはできません)。カラーパネルで別の色を選択すると呼び出されます。

4

4 に答える 4

15

OK、これが機能するコードです。IBのcolorwellクラスをAlphaColorWellに設定します:**

@implementation AlphaColorWell

- (void)activate:(BOOL)exclusive
{
    [[NSColorPanel sharedColorPanel] setShowsAlpha:YES];
    [super activate:exclusive];
}

- (void)deactivate
{
    [super deactivate];
    [[NSColorPanel sharedColorPanel] setShowsAlpha:NO];
}

@end
于 2013-03-04T06:56:25.757 に答える
1

答えは、ほとんどの AppKit を扱うのと同様に、サブクラス化することです。

@interface AlphaColorPanel : NSColorPanel

@end

@implementation AlphaColorPanel

- (BOOL)showsAlpha {
    return YES;
}

@end

次に IB に移動し、アルファ スライダーを表示する特異なカラー パネルのクラスをオーバーライドします。

于 2013-03-03T19:30:15.783 に答える