問題タブ [nsbuttoncell]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - drawRect の NSButton 着色画像
drawRect でボタンに色を付けたいのですが、画像に色を付けるための適切な設定が見つかりません
-ボタンは縁なしで、グレースケールの画像で、色合いを付けたい
私の NSButton サブクラスでは:
objective-c - カスタム NSButtonCell レンダリングとデフォルト ボタン
最近、カスタム NSButtonCell サブクラスの問題に遭遇しました。白いテキストの暗いインターフェイスがあり、デフォルトのボタンを作成しようとするまで(つまり、に相当するキーを割り当てるまで)、すべてが期待どおりに進んでいます\r
。私たちが得たものは不思議に思えます: ベゼルは描画しますが、テキストは描画しません. しかし、テキストを黒にすると、描画されます。黒い影でテキストを白くすると、影だけが描画されます!
テキストをひばりに設定してテストしてみると、謎が解け始めました[NSColor redColor]
。(ここでの「作成」ボタンには\r
、「キャンセル」は に相当するキーがありEsc
ます。)
私が最終的に理解したのは、デフォルトのボタンのセルがビットマップ コンテキストに描画されていることです。おそらく、レンダリングされたグリフをキャッシュして、Aqua の外観が与えるアニメーション化された青いパルスの背景を実現できるようにするためです。これはまったく理にかなっていますが、驚いたことに、そのビットマップは乗算合成操作で描画されます。したがって、黒が表示され、白は表示されず、その間にあるものは暗く表示されます。
テキストのレンダリングを削除して代わりに-drawTitle:withFrame:inView:
実行することで、回避策をハックすることができました。-drawBezelInFrame:inView:
ただし、これは繰り返し呼び出されるため、画像を手動でキャッシュする必要があります。さらに、タイトルをレンダリングする方法が特に間違っているため、概念的に醜いだけです!
私の質問: 確かにもっと良い方法があるはずですよね? ボタンがデフォルトであっても、このオフスクリーン レンダリング パスを自動的に使用しないようにボタン セルに指示する方法はありますか?
macos - Mac App Store から拒否されるプライベート クラス名の根拠を確認していますか?
「ストック」アクアのラジオボタンとチェックボックスの画像が通常のNSButtonCell
方法で描画されていることに気付きました-drawImage:withFrame:inView:
.
サブクラスで描画するとき、NSButtonCell
渡されたストック画像と開発者から提供された画像を区別したいと思います。カスタム画像ならそれを使って欲しいけど、デフォルトのインターフェース画像なら自分で作画したい。それは理にかなっていますか?
とにかく、画像がデフォルトのインターフェース画像であるかどうかをチェックするメソッドを書きました。これは次のようになります。
Apple 提供のイメージはプライベート クラスを使用しているため、このNSClassFromString()
関数を使用して実行時に出力するようにし、コンパイラの警告が大量に表示されないようにしています。この手法はうまく機能し、描画メソッドに渡された画像を描画する必要があるかどうかを確認できます。問題は、プライベート クラスを参照しているという理由だけで、開発者のアプリが Mac App Store に受け入れられないようにしたくないということです。
私はこれらすべてに慣れていないので、Apple の規則がどれほど「厳格」であるか正確にはわかりません。プライベート クラスまたはフレームワークの名前を使用することに関して、Apple がどこに線を引いているか知っている人がいれば、ぜひ知りたいです。ありがとう!
cocoa - NSButton: 異なるフォーカス リングの色を設定する
NSButton フォーカス リングの色を白に設定しようとしています。現在、ボタンに firstResponder がある場合、青いアウトラインが表示されます。
これを行うのに役立つdrawFocusRingMaskWithFrame:inView:があることは承知していますが、これを使用して色を白に変更する方法がわかりません。この API が実際に使用されている例は見たことがありません。
ありがとう。
objective-c - 私の NSButtonCell に何が起こっているのですか?
私は OS X アプリ (ターゲット 10.10、Xcode 6.1) を作成していますが、カスタム NSButtonCell サブクラスに本当に混乱しています。ここで、あってはならないことが起こっているようです。私は OS X プログラミングに慣れていないので、NSButtonCell の内部動作について洞察を持っている人がいるかどうか尋ねています。
まず、何が機能しているように見えますか?
- ボタンの画像とタイトルを設定できます。画像は正常に表示されます。
- ストーリーボードは、ボタンをスタイル: テクスチャ、タイプ: Momentary Change に設定します。境界線ではなく、透明ではなく、混合状態を許可しません。
苦情のリスト:
-drawTitle:withFrame:inView:
セルの に応じてカスタム カラーでタイトルを描画するようにオーバーライドしますhighlighted
。この色は、セルが強調表示されていないときのはずですが、実際には.#cccccc
#d6d6d6
- ボタンには画像と代替画像の両方があります。描画される画像は決して代替画像ではないため、オーバーライド
-drawImage:withFrame:inView:
してセルの正しい画像を選択しますhighlighted
。これは機能しているように見えますが、NSButtonCell は一体何なのでしょうか? オン/オフ状態は強調表示とどう違うのですか? 私は多くの Type オプションを試しましたが、ボタンを押すと一時的に変化highlighted
し、トグルするという事実を変えるものはないようですstate
。 - ハイライトの瞬間的な変化といえば、その持続時間は可能な限り短いように見えるので
-drawWithFrame:inView:
、指定されたしきい値よりも頻繁に呼び出されるのを防ぐために、ある種の「デバウンサー」を実装する必要がありました。 - 私のボタンセルには、プロパティ
myBackgroundColor
ともありますmyAlternateBackgroundColor
。backgroundColor
カスタムの背景形状 (塗りつぶされた四角形、塗りつぶされた円など) を描画できるようにする必要があるため、使用していません。の場合、代替背景色が使用されhighlighted
ます。ここでの問題は、代替の背景色が! のよう#93edbf
に見えること#a1eecb
です。のように見せるに#93edbf
は、色を に設定する必要があり#84ecb2
ます。 - ここまでは、このボタン セルの 1 つの特定のインスタンスについて説明してきました。しかし、別の例では、別の背景がまったく描画されていません! ストーリーボードのコードを読みましたが、ボタンは可能な限り同一です。私のView Controllerコードも同様に、両方のボタンセルのプロパティを同時に更新します。ボタンの動作が別のボタンと異なるのはなぜですか?
- マウスを押した後、「瞬間的に」ではなく、マウスを押したときにボタンを強調表示したい。カスタムセルにはまだ実装していません。男、NSButtonCellには本当に欠けているものがあります。そのようなことはどのように起こりますか?OS X と iOS のチームが互いに話し合ったことはありませんか?
どうなり得るか?
セルcontrolTint
が に設定されていることを確認しましたNSClearControlTint
。バックグラウンド フィルター、合成フィルター、およびコンテンツ フィルターがこれに関係していない可能性があるかどうかを確認しました。
Apple が UI 要素にネイティブのルック アンド フィールを使用することを本当に望んでいることは知っていますが、ハイライト ティントの使用を強制するところまで行くとは思いもしませんでした。
cocoa - NSButton(セル) setFont
NSButtonCell
のsetFont
メソッドは 10.9 から使用できなくなったようです。
それを(再)実装する方法(またはカテゴリ)はありますか?
Apple がボタンに独自のスタイルを強制する理由がわかりません。
私は自分のカスタムボタンのスタイルを2日間試みています(ボタンのテキストの色を変更するだけのカテゴリも必要でした-残念です)。
objective-c - NSButton タイプが正しく設定されていません
私はMacアプリを持っています。
その中で、プログラムで NSButton を作成しています。
以下は私のコードです。
したがって、以下のように表示されます
欲しいのは画像だけ。その白い背景ではありません。
ボタンのタイプやどこかで私が犯しているばかげた間違いがあることを私は知っています。私はたくさん試しましたが、運がありません。
また、Mac OS X では、前にボタンを表示することができますか?
これについて私を助けてください。