問題タブ [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.

0 投票する
1 に答える
992 参照

macos - drawRect の NSButton 着色画像

drawRect でボタンに色を付けたいのですが、画像に色を付けるための適切な設定が見つかりません

-ボタンは縁なしで、グレースケールの画像で、色合いを付けたい

私の NSButton サブクラスでは:

0 投票する
0 に答える
230 参照

objective-c - カスタム NSButtonCell レンダリングとデフォルト ボタン

最近、カスタム NSButtonCell サブクラスの問題に遭遇しました。白いテキストの暗いインターフェイスがあり、デフォルトのボタンを作成しようとするまで(つまり、に相当するキーを割り当てるまで)、すべてが期待どおりに進んでいます\r。私たちが得たものは不思議に思えます: ベゼルは描画しますが、テキストは描画しません. しかし、テキストを黒にすると、描画されます。黒い影でテキストを白くすると、影だけが描画されます!

テキストをひばりに設定してテストしてみると、謎が解け始めました[NSColor redColor]。(ここでの「作成」ボタンには\r、「キャンセル」は に相当するキーがありEscます。)

赤いボタンのテスト

私が最終的に理解したのは、デフォルトのボタンのセルがビットマップ コンテキストに描画されていることです。おそらく、レンダリングされたグリフをキャッシュして、Aqua の外観が与えるアニメーション化された青いパルスの背景を実現できるようにするためです。これはまったく理にかなっていますが、驚いたことに、そのビットマップは乗算合成操作で描画されます。したがって、黒が表示され、白は表示されず、その間にあるものは暗く表示されます。

テキストのレンダリングを削除して代わりに-drawTitle:withFrame:inView:実行することで、回避策をハックすることができました。-drawBezelInFrame:inView:ただし、これは繰り返し呼び出されるため、画像を手動でキャッシュする必要があります。さらに、タイトルをレンダリングする方法が特に間違っているため、概念的に醜いだけです!

私の質問: 確かにもっと良い方法があるはずですよね? ボタンがデフォルトであっても、このオフスクリーン レンダリング パスを自動的に使用しないようにボタン セルに指示する方法はありますか?

0 投票する
1 に答える
202 参照

cocoa - バインドされた NSTableview の列内のチェックボックスを選択解除する際の問題

NSTableView内のチェックボックスの作成とそれらをバインドする方法を示すaneesh171によって作成されたこのプロジェクトを使用しています。私は OSX 開発に不慣れで、それがどのように機能するかを理解しようとしています。

プロジェクトは基本的に、配列コントローラーにバインドされている NSTableView の列内のチェックボックスです。

何らかの理由で、これらのチェックボックスのいずれかを選択解除すると、コンソール ウィンドウに次のメッセージが表示されます。

チェックボックスが選択されている場合、このメッセージはコンソールに表示されません。

何が悪いのか教えてもらえますか?

0 投票する
0 に答える
101 参照

macos - Mac App Store から拒否されるプライベート クラス名の根拠を確認していますか?

「ストック」アクアのラジオボタンとチェックボックスの画像が通常のNSButtonCell方法で描画されていることに気付きました-drawImage:withFrame:inView:.

サブクラスで描画するとき、NSButtonCell渡されたストック画像と開発者から提供された画像を区別したいと思います。カスタム画像ならそれを使って欲しいけど、デフォルトのインターフェース画像なら自分で作画したい。それは理にかなっていますか?

とにかく、画像がデフォルトのインターフェース画像であるかどうかをチェックするメソッドを書きました。これは次のようになります。

Apple 提供のイメージはプライベート クラスを使用しているため、このNSClassFromString()関数を使用して実行時に出力するようにし、コンパイラの警告が大量に表示されないようにしています。この手法はうまく機能し、描画メソッドに渡された画像を描画する必要があるかどうかを確認できます。問題は、プライベート クラスを参照しているという理由だけで、開発者のアプリが Mac App Store に受け入れられないようにしたくないということです。

私はこれらすべてに慣れていないので、Apple の規則がどれほど「厳格」であるか正確にはわかりません。プライベート クラスまたはフレームワークの名前を使用することに関して、Apple がどこに線を引いているか知っている人がいれば、ぜひ知りたいです。ありがとう!

0 投票する
1 に答える
722 参照

cocoa - NSButton: 異なるフォーカス リングの色を設定する

NSButton フォーカス リングの色を白に設定しようとしています。現在、ボタンに firstResponder がある場合、青いアウトラインが表示されます。

これを行うのに役立つdrawFocusRingMaskWithFrame:inView:があることは承知していますが、これを使用して色を白に変更する方法がわかりません。この API が実際に使用されている例は見たことがありません。

ありがとう。

0 投票する
0 に答える
459 参照

objective-c - 私の NSButtonCell に何が起こっているのですか?

私は OS X アプリ (ターゲット 10.10、Xcode 6.1) を作成していますが、カスタム NSButtonCell サブクラスに本当に混乱しています。ここで、あってはならないことが起こっているようです。私は OS X プログラミングに慣れていないので、NSButtonCell の内部動作について洞察を持っている人がいるかどうか尋ねています。

まず、何が機能しているように見えますか?

  1. ボタンの画像とタイトルを設定できます。画像は正常に表示されます。
  2. ストーリーボードは、ボタンをスタイル: テクスチャ、タイプ: Momentary Change に設定します。境界線ではなく、透明ではなく、混合状態を許可しません。

苦情のリスト:

  1. -drawTitle:withFrame:inView:セルの に応じてカスタム カラーでタイトルを描画するようにオーバーライドしますhighlighted。この色は、セルが強調表示されていないときのはずですが、実際には.#cccccc#d6d6d6
  2. ボタンには画像と代替画像の両方があります。描画される画像は決して代替画像ではないため、オーバーライド-drawImage:withFrame:inView:してセルの正しい画像を選択しますhighlighted。これは機能しているように見えますが、NSButtonCell は一体何なのでしょうか? オン/オフ状態は強調表示とどう違うのですか? 私は多くの Type オプションを試しましたが、ボタンを押すと一時的に変化highlightedし、トグルするという事実を変えるものはないようですstate
  3. ハイライトの瞬間的な変化といえば、その持続時間は可能な限り短いように見えるので-drawWithFrame:inView:、指定されたしきい値よりも頻繁に呼び出されるのを防ぐために、ある種の「デバウンサー」を実装する必要がありました。
  4. 私のボタンセルには、プロパティmyBackgroundColorともありますmyAlternateBackgroundColorbackgroundColorカスタムの背景形状 (塗りつぶされた四角形、塗りつぶされた円など) を描画できるようにする必要があるため、使用していません。の場合、代替背景色が使用されhighlightedます。ここでの問題は、代替の背景色! のよう#93edbfに見えること#a1eecbです。のように見せるに#93edbfは、色を に設定する必要があり#84ecb2ます。
  5. ここまでは、このボタン セルの 1 つの特定のインスタンスについて説明してきました。しかし、別の例では、別の背景がまったく描画されていません! ストーリーボードのコードを読みましたが、ボタンは可能な限り同一です。私のView Controllerコードも同様に、両方のボタンセルのプロパティを同時に更新します。ボタンの動作が別のボタンと異なるのはなぜですか?
  6. マウスを押した後、「瞬間的に」ではなく、マウスを押したときにボタンを強調表示したい。カスタムセルにはまだ実装していません。男、NSButtonCellには本当に欠けているものがあります。そのようなことはどのように起こりますか?OS X と iOS のチームが互いに話し合ったことはありませんか?

どうなり得るか?

セルcontrolTintが に設定されていることを確認しましたNSClearControlTint。バックグラウンド フィルター、合成フィルター、およびコンテンツ フィルターがこれに関係していない可能性があるかどうかを確認しました。

Apple が UI 要素にネイティブのルック アンド フィールを使用することを本当に望んでいることは知っていますが、ハイライト ティントの使用を強制するところまで行くとは思いもしませんでした。

0 投票する
1 に答える
213 参照

cocoa - NSButton(セル) setFont

NSButtonCellsetFontメソッドは 10.9 から使用できなくなったようです。
それを(再)実装する方法(またはカテゴリ)はありますか?

Apple がボタンに独自のスタイルを強制する理由がわかりません。
私は自分のカスタムボタンのスタイルを2日間試みています(ボタンのテキストの色を変更するだけのカテゴリも必要でした-残念です)。

0 投票する
0 に答える
153 参照

objective-c - NSButton タイプが正しく設定されていません

私はMacアプリを持っています。

その中で、プログラムで NSButton を作成しています。

以下は私のコードです。

したがって、以下のように表示されます画像

欲しいのは画像だけ。その白い背景ではありません。

ボタンのタイプやどこかで私が犯しているばかげた間違いがあることを私は知っています。私はたくさん試しましたが、運がありません。

また、Mac OS X では、前にボタンを表示することができますか?

これについて私を助けてください。