NSButtonCell をサブクラス化して、描画 (カスタマイズ可能なテーマ) をカスタマイズしています。チェックボックスとラジオボタンの描画方法をカスタマイズしたいと思います。
ボタンがチェックボックスかラジオボタンかを検出する方法を知っている人はいますか?
-setButtonType: のみがあり、ゲッターはありません。また、-showsStateBy も -highlightsBy も、画像と代替画像を含む通常のプッシュ ボタンには適用されないチェックボックスの一意の戻り値を提供していないようです。
これまでのところ、私は 2 つの (あまりきれいではない) 回避策を見つけましたが、それらはおそらくアプリが MAS から拒否されるようなものです:
[self valueForKey: @"buttonType"] を使用します。これは機能しますが、メソッドがヘッダーに含まれていないため、これは Apple が私に望んでいないことだと思います。
-setButtonType: および -initWithCoder: をオーバーライドして、手動または XIB から設定されたボタン タイプを追跡します。ボタンの種類をディスクに保存するために使用されるキーが文書化されていないため、ここで問題になるのは XIB の場合です。繰り返しますが、プライベート API を使用します。
クライアント コードで、チェックボックス用に別の ULIThemeSwitchButtonCell クラスを使用し、ラジオ ボタン用に 3 つ目のクラスを使用するよう強制するのではなく、これを NSButtonCell の単純なドロップイン代替品にしたいと考えています。