5

私は非常に単純に聞こえる問題に取り組もうとしています: NSPopupButton の背景色を変更します。

Interface Builder では、スタイルを事前定義されたものに変更することのみが許可され、背景色を変更することはできません。また、メソッドがないため、 をセットアップしてIBOutletも役に立ちNSPopupButtonませんでしたsetBackgroundColor

NSPopupButtonメソッドをオーバーライドするためにサブクラス化も試みましたdrawRect。これが私が試したことです:

- (void)drawRect:(NSRect)dirtyRect
{
    [[NSColor redColor] setFill];
    NSRectFill(dirtyRect);
}

NSPopupButtonこれにより、背景色として設定するのではなく、上に赤い四角形が描画されます。

これを解決する方法についてのアイデアはありますか?

4

3 に答える 3

11

NSPopUpButtonCell のサブクラスを作成してからオーバーライドする必要があります

- (void)drawBezelWithFrame:(NSRect)frame inView:(NSView *)controlView

NSPopupButtonCell はNSButtonCellのサブクラスで、ベゼル、タイトル、画像などの個々のセル コンポーネントを描画するためのいくつかのメソッドを定義します。

次に、NSPopupButton を展開し、そのセル サブクラスを新しいサブクラスに変更します。描画メソッドを使用する必要があります。

iOS とは異なり、Cocoa は主に NSCell を使用して描画を処理します

于 2012-11-09T01:11:22.190 に答える
-3

ボタンはシステムによって描画されるため、システムが希望どおりに描画する方法で背景色を設定する実際の方法はありません。できることは、drawRect メソッドで描画することだけです。タイトルを描画し、長方形の一部を描画します。 

于 2012-11-05T22:35:45.393 に答える