問題タブ [nsview]
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.
cocoa - addSubviewと自動サイズ設定
ウィンドウにビューを追加して、ウィンドウフレーム内に収まるようにビューのサイズを変更するにはどうすればよいですか?
問題
2つのビューを含むシートウィンドウを作成していますが、一度に1つしか表示されないため、ビューのサイズがウィンドウと同じであることが重要です。私の問題は、view0が正しく適合し、view1が適合しないか、またはその逆であるということです。窓と同じ大きさにする方法がわかりません。
考えられる解決策
両方のビューがInterfaceBuilder内で正確に同じサイズであることを確認できれば、機能します。しかし、私はこれをプログラムで行う方法を探しています。
view0のスクリーンショット
以下に、ビューが何らかの形でクリップされている上部と右側の自動サイズ変更の問題を示します。
(ソース:flickr.com)
view1のスクリーンショット
このビューは正しくサイズ変更されます。
(ソース:flickr.com)
これが私のコードです
ビューをウィンドウに追加する前に、ビューのサイズを変更できますか。または、ウィンドウフレームを変更しながら、ビューを1つずつ追加するのと同じように行う方がよいでしょう。どうしますか?
objective-c - NSViewでグリッドを作成する
私は現在NSView
、ユーザーがグリッドの間隔とグリッドの色を変更できるという考えで、グリッドパターン(基本的には水平線と垂直線のガイド)を描画するを持っています。
グリッドの目的は、オブジェクトを並べるときにユーザーのガイドラインとして機能することです。1つの例外を除いて、すべてが正常に機能します。NSWindow
グリッド間隔が特に小さい場合(たとえば10ピクセル)、サイズ変更ハンドルをドラッグしてサイズを変更します。ドラッグのサイズ変更は本質的に無気力になります。
グリッドの私のdrawRect
コードは次のとおりです。
これは、グリッドを描画する方法と完全に関係していると思います。また、グリッドをどのように処理するかについての提案を受け入れています。
非効率性がどこにあるのかがわかります。ドラッグサイズ変更は、サイズ変更時にこのビューでNSWindow
常に呼び出してdrawRect
います。グリッドが近いほど、親ウィンドウのピクセルあたりのドラッグ数が多くなります。
ウィンドウのサイズ変更時にビューを非表示にすることを考えていましたが、動的ではありません。遅延やちらつきが感じられないように、ユーザーエクスペリエンスを非常にスムーズにしたいと考えています。
グリッドを描画するためのより良いまたはより効率的な方法について誰かが何かアイデアを持っていますか?
いつものように、すべての助けは非常にありがたいです。
cocoa - CALayers の印刷
多くの CALayers を含む NSView があります。ユーザーがドキュメントを編集しているとき、これらの CALayer はすべての編集をアニメーション化します。アプリに印刷を実装しようとしていますが、これらの CALayers を正しく印刷する際に問題が発生しています。
一部の CALayers 境界は NSView 全体を占有し、その位置が変更されないため、配置する必要はありません。ただし、約 20 個の小さな CALayer を含む CALayer も 1 つあります。これらの CALayer は、通常の編集中に位置の変化をアニメートします。ただし、NSView を印刷しようとすると、これらの小さな CALayer が正しくレイアウトされません。これらのレイヤーが正しく配置されていることを確認し、NSView を正しく描画/印刷できるようにするために何か特別なことをしなければならないかどうか疑問に思っています。
Core Animation でサポートされた NSView を印刷した経験のある人はいますか? 任意の提案をいただければ幸いです。
macos - CGPath からの NSView の作成
私は CGPath を持っていて、一度 NSView に描画したいと考えています。比較的単純に思えますが、AppKit (iPhone 以外) で方法が見つかりませんでした。
cocoa - NSWindowをNSViewのサブビューとして表示
別のウィンドウの一部として表示したい NSWindow があります。NSWindow でなければなりません。私はそれをNSViewなどに変更したくありません...外部のnibファイルなどにアクセスする必要があるため、変更したくありません。
可能であれば、これをどのように達成する必要がありますか? 私は NSWindow のビューを取得し、それをメイン ウィンドウの別のビューのサブビューとして貼り付けるという方針に沿って考えていましたが、これは可能ではないと思います。それは...ですか?
cocoa - NSView での NSString の奇妙な動作
Skat-Game を作成しようとすると、次の問題が発生しました。
isBidding はブール値を示します。プログラムは特定の状態にあります。[desk selected] は現在選択されているプレイヤーを返すメソッド呼び出しです。chatStrings は辞書で構成され、プレイヤー、誰が入力したか、何を入力したかの文字列を保存します。
これは、文字列の内容を決定する部分です。文字列は [event characters] メソッドによって提供されます。
問題がある場合はこれです:
3 文字以上入力すると、ビューに NSRectSet{{{471, 574},{500, 192}}} が表示され、印刷しようとすると説明が返されません。
その後、EXC_BAD_ACCESS メッセージが表示されますが、解放していませんが (私が確認できる限り)、alloc と init で文字列も作成したため、自動解放プールに参加できません。デバッガーで変化するときのプロセスも監視しようとしましたが、責任あるコードは見つかりませんでした。
ご覧のとおり、私はまだ Cocoa (およびプログラミング全般) の初心者なので、誰かがこれを手伝ってくれたら本当にうれしいです。
objective-c - Cocoa WebView のレイヤリング - 上に描画しますか?
私が見つけることができる唯一の他のスレッドは、必ずしも私のニーズに合わない上記のものです。Web ビューの上にビューを単純に描画する信頼できる方法はありますか? WebView の上に通常の NSView を重ねようとしましたが、最初は正しく描画されますが、WebView 内の動き (ページのスクロールなど) は、ビューを無効にして視覚的なアーティファクトを生成するように見えます。
私はもう試した:
運が悪い、同じ問題-何かが欠けていない限り、zオーダーは機能しないようです。
これは単なる Web ビューの制限ですか?
また、上記のビューをウィンドウとして実装しようとしましたが、これははるかにうまく機能しました (ウィンドウの位置をプログラムで制御しただけです)。ただし、望ましい動作は、ユーザーがこのウィンドウにテキストを入力することですが、「フォーカス」を盗まないことです。つまり、ユーザーがテキスト フィールドをクリックすると、メイン ウィンドウが非アクティブになります (x - + が灰色になります)。新しいウィンドウで。それを回避する方法はありますか?
NSWindow をサブクラス化し、canBecomeKey (YES を返す) と canBecomeMain (NO を返す) をオーバーライドしようとしましたが、ウィンドウはまだフォーカスを盗みます。
編集: 私は泣きます :-( Webkit 上の描画を回避する方法がわかりません。一方、アプリのメイン ウィンドウを強制的にアクティブな状態に保つ方法を見つけました。キー状態のポップアップ ウィンドウ. ただし、ポップアップ ダイアログでテキスト入力を使用すると、意図しない結果が生じます (キー ウィンドウ状態に強制する必要があります). バックスペースが機能しません :: 首を振る ::, およびマウス イベント以下のWebkitビューに配布されていません(htmlに埋め込まれたコンポーネントへのマウスオーバーの場合)。
ジョシュ
cocoa - NSView をすべての NSView の前面に移動するにはどうすればよいですか
2 つのサブビューを持つスーパー ビューがあります。これらのサブビューは重複しています。
メニューからビューを選択するたびに、対応するビューが正面図になり、アクションを処理する必要があります。つまり、最前面のサブビューにする必要があります。
acceptsFirstResponder
すべての仕事をうまく辞任します。ただし、マウスダウンイベントは、設定された最上位のサブビューに送信されます。
よろしく、ダーナ
objective-c - NSMenuItem のビュー (NSView サブクラスのインスタンス) がホバー時に強調表示されない
カスタムNSView
サブクラスを使用して一部のコンテンツを描画する必要がありますが、ユーザーがホバーしたときにハイライト表示されずNSMenu
、ユーザーがクリックしても閉じません。何か案は?
編集
を使用する-drawRect:
と[[self enclosingMenuItem] isHighlighted]
、ビューを強調表示して描画する必要があるかどうかを判断でき、そうする機会が与えられます。私が理解しなければならないのは、それを行う方法だけです。
cocoa - Cocoa: 編集可能なテキスト領域を持つカスタム NSView を実装する方法は?
編集可能なテキスト領域を持つカスタム NSView を作成するために必要な最小限の実装は何ですか? これには NSTextFieldCell を使用できると思います。ビューでセルを描画することに成功しましたが (これは簡単です)、編集可能にするには、ビューとセルの間でより複雑な調整が必要なようです。サンプルコードはどこかにありますか?
アップデート。私の長期的な目標は、同じビュー上により多くの編集可能なテキスト領域を持つことであることを明確にするべきでした。知る限り、セルは本格的なビューよりも軽量であるため、その場合はセルを使用することをお勧めします。私の更新された質問は次のとおりです。適切な NSCell を使用して、編集可能なテキスト領域を持つカスタム NSView を作成するために必要な最小実装は何ですか?