1

windowDidLoad で以下を使用して、ほとんどの xib ウィンドウで NSButtonCells の背景を正常に変更しました。

[[self.generalOkButton cell] setBackgroundColor:[NSColor blueColor]];

何らかの理由で、Preferences Window Controller (選択された ToolbarItem に応じてスワップアウトされる NSViews を備えたツールバーを含む) でこれを実行しようとすると、どのビューのボタンの背景色も変更されません。 .

コードをステップ実行し、コード内のボタンに (IBOutlet を介して) 実際に参照があることを確認してから、メソッドを呼び出して変更する前と後で backgroundColor を確認しました。確かに変更されていますが、何らかの理由で、そのウィンドウのボタンのどれも、背景が変更されたことを反映していません。

NSViews がウィンドウの内外でスワップされているため、windowDidLoad で機能しない可能性がある理由はありますか? 背景色を設定するコードを、ビューを入れ替えるメソッドに移動しようとしましたが、それでもうまくいきませんでした。

任意のアイデア/提案をいただければ幸いです。ありがとう

アップデート

irc の誰かが、NSButtonCell を KVO で観察して、元に戻されているかどうかを確認することを提案しました。

これを設定すると、色を設定すると変化が見られますが、それだけです。再び変更されることはないようです....それでも、画面に正しい背景色でボタンが表示されません。

ログ:

BGColor was changed: {
    kind = 1;
    new = "NSCalibratedRGBColorSpace 0 0.423529 0.792157 1";
    old = "<null>";
}

更新 2

タブ付きボタンの色の動作とタブなしの両方を示す簡単なサンプル プロジェクトをコーディングしました。こちらのドロップボックスで期間限定でホストされます: https://www.dropbox.com/s/nrl71p4yk6iyp4w/TestButtonColor.zip

4

1 に答える 1

1

理解した。freenode の #macdev の人たちに感謝します。

[self.window.contentView setWantsLayer:YES];

レイヤーを実際に使用していなかったので、設定する必要はありません。

これを削除すると、そのウィンドウでボタンの色が正常に機能しました。注: また、レイヤーを使用する必要がある場合は、ボタンのレイヤーの背景色を設定して機能させる必要があるとも言われました。

于 2013-07-30T20:25:20.097 に答える