問題タブ [nsscrollview]
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 - サイズ変更時にNSScrollViewがスクロールしないようにするにはどうすればよいですか?
サードパーティのPDFライブラリ用のPDFViewerを作成しています。NSScrollViewのサブクラスとNSViewのサブクラスがあります。問題は、ウィンドウのサイズを変更すると、NSScrollViewが上下にスクロールすることです。
関連するコードは次のとおりです。
Windowsのサイズが変更されるたびに、NSScrollViewのサブクラスは次のメッセージを受け取ります。
私のdocViewでは、NSViewのサブクラスであり、PDFを描画するためのコードが含まれています
cocoa - NSScrollView -- 4 行未満の場合、青いボタンのスクロール バーが表示されませんか?
スクロール ビューの長さが 4 行でない限り、Cocoa は青いスクロール ボタンをレンダリングしません。
(ソース: gordonjl.com )
スクロール ビューが 2 行しかない場合にスクロール バー ボタンを表示する方法を知っている人はいますか?
ありがとう!
cocoa - NSScrollViewのNSTextViewの周りのパディング
NSScrollView内のNSTextViewの周りに数ピクセルのパディングを提供したいと思います。私はこの投稿を確認し、setTextContainerInsetを使用して、左、右、および下の余白を処理します。しかし、テキストがスクロールするとすぐに、一番上のバッファが失われます。textContainerOriginをオーバーライドする場合も同じです。その投稿の別の答えは次のように述べています。
テキストエディットが行う方法([ページに折り返し]モードの場合)は、テキストビューを大きなビューの内側に配置し、その大きなビューをスクロールビューのドキュメントビューとして設定することです。
しかし、それを行うと(たとえば、NSBoxを使用して)、コンテンツはスクロールしなくなります。私はその特定のトリックに関して何かが欠けていますか、それとも人々が提案できる他のテクニックはありますか?
objective-c - カスタム NSView を NSScrollView にラップするにはどうすればよいですか?
Cocoa のNSScrollViewはひどく説明不足です。ここにいる誰かがそれが何であるかを知っていて、数秒時間を割いてくれることを願っています.
だから私はカスタムNSViewを持っています。私は -drawRect を実装しています: 何かを描画したり、色で塗りつぶしたりします。次に、それをラップする NSScrollView を用意します (インターフェイス Builder を使用して設定します)。
ここで、内側のカスタム ビューは、スクロールするために、外側のスクロール ビューに収まるサイズよりも大きいサイズにする必要があります。それくらい私は気づきます。ちなみに、スクロール ビューが周囲のウィンドウのサイズに合わせて調整されるように構成しましたが、それは問題ではありません。
内部ビューの -frame メソッドをオーバーライドして、少なくとも 1000x1000 のサイズのフレームを返します。
解釈に問題がある結果は次のとおりです。
- スクロール ビューが 1000x1000 より小さい領域を囲む場合にスクロールできます
しかし
色で塗りつぶされた唯一の領域 (つまり、私の -drawRect: メソッドが影響する領域) は
- スクロール ビューの境界と同じ大きさ
- (0,0 にあります。私は反転を使用しているので、それが左上であり、スクロール後に可視領域の外に出てしまいます。
- この無関係な長方形の外側にある可視領域はまったく描画されません。
私はこの点を超えて何も知りません。描画用の四角形は、ウィンドウ内のスクロール ビューの位置やサイズなどにクリップされているようですが、スクロールされた「場所」は考慮されていません。
他に何かが起こるとは本当に期待していないことに注意してください。ピースが欠けているように感じますが、どれが見つかりません。テキストの壁で申し訳ありませんが、今はうまく説明できません。質問するより答えやすいと思います。
よろしくお願いします。
リック・アストリーではない
macos - 2つのテーブルのリンクスクロール
Cocoa AppKitで2つのNSTableView(またはその基礎となるNSScrollView)のスクロールをリンク(同期)するにはどうすればよいですか?
一方のスクローラーをもう一方のスクローラーに設定しようとしましたが、これにより2番目のテーブルがスクローラーの制御を失います(つまり、テーブルの横に表示されなくなります)。
以前の質問はUIKitについてこれに対処しましたが、AppKitNSScrollerは同等のインターフェースを提供していないようです。
助けていただければ幸いです。
cocoa - CALayer で NSScrollView を使用する
NSCollectionView
コア アニメーションを使用する以外は、グリッド スタイル ビュー (に類似) を作成しようとしています。私はそれをかなりやり遂げました。最後にやるべきことは、スクロールを実装することです。
これまでのセットアップでは、NSView
サブクラス (レイヤーがサポートされている) があり、初期化時にグリッド レイヤーを作成し、メイン ビュー レイヤーのサブレイヤーとして追加します。CALayoutManager
サブビューをグリッド状に配置するグリッド レイヤーのカスタムを作成しました。予想どおり、グリッド レイヤーにサブレイヤーを追加すると、レイアウト マネージャーが呼び出され、レイヤーが自動的に配置されます。この時点まで、すべてが正常に機能しています。
NSScrollView
カスタム ビューの親としてを使用してスクロールを実装しようとすると、問題が発生します。これを次のように設定しました: NSScrollView
Interface Builder のサブビューとしてカスタム ビューを作成しました。次に、レイアウト マネージャー クラスにdelegate
プロパティを追加し、初期化中に、ビュー サブクラス自体をレイアウト マネージャーのデリゲートとして設定します。レイアウト マネージャーのメソッドの最後でlayoutSublayersForLayer:
、delegate メソッドを使用してそのデリゲートを呼び出しますlayoutManager:contentHeightChanged:
。NSView
サブクラスでのそのメソッドの実装は次のとおりです。
新しい高さがスクロール ビューのコンテンツ サイズよりも大きいかどうかを確認し、新しい高さでビュー フレームを設定するだけです。
これはある程度機能します。ビューのサイズが変更されると、ビューのフレームがコンテンツの高さ全体をカプセル化するように適切にサイズ変更され、スクロールバーが表示されます。問題: スクロールバーが表示された状態でビューのサイズを変更すると、グリッド レイヤーのサブレイヤーがジッターします。問題を示すビデオは次のとおりです。
ご覧のとおり、スクロールバーが表示されていない場合 (つまり、コンテンツの高さがスクロール ビューの境界内に収まっている場合) は問題ありません。スクロール ビューを使用せずに同じことをテストしたところ、ジッターがないため、これがレイアウト マネージャーと単一列の処理に問題がないことを確認できます。
どんなアドバイスでも大歓迎です。
objective-c - NSScrollView の不適切なコンテンツ サイズ
カスタム NSView サブクラスの親である NSScrollView があります。サブクラスは、サブビューcontentSize
をレイアウトするために NSScrollView のメソッドを使用します。
問題は、最初の起動時に NSScrollView が contentSize を間違って報告することです。サイズが本来あるべきサイズ (スクローラーの幅) よりも 15 ピクセル大きいと報告されます。したがって、スクローラーの幅を考慮せずに contentSize を返しているようです。ただし、スクロール ビューのフレームを (サイズ変更などによって) 調整するとすぐに、コンテンツ サイズが適切に報告されます。最初の起動時に問題があるようです。
これはバグとして報告する必要がありますか?これに対する適切な解決策はありますか? レイアウト中にチェックを実行してメソッドが初めて呼び出されたかどうかを確認する汚い方法を使用して、コンテンツ サイズから 15px を差し引くこともできますが、もっと良いものがあれば、それはありがたいです。
objective-c - NSScroller をコンテンツにオーバーレイする
NSScrollerをスクロール ビューのコンテンツにオーバーレイする方法はありますか (iOS のように)? 私はすでにいくつかのアプローチを試しました:
a)スクロール ビュー コンテンツ ビュー (NSClipView) のフレームを設定して、スクローラーの境界内に拡張する
b) NSScroller オブジェクトをスクロール ビューのサブビューとして追加する (必要な場所に配置する)
c)完全にカスタムのスクローラービューを作成し、それをサブビューとして配置します(これは機能しましたが、NSScrollerのすべての機能を書き直す必要があることを意味します)
Sparrowはこれをうまく行っているようで、通常の NSScroller サブクラスを介してそれを行っているようです (システム環境設定 >> 外観で設定されたスクロール設定に応答するように見えます)。問題はスクローラーを実際に描画することではなく、コンテンツをオーバーレイするだけです。
どんなアドバイスでも大歓迎です:-)
cocoa - NSScrollView(またはNSClipview)フォーカスリング?
NSScrollViewにカスタムNSViewがあります。NSScrollView(またはおそらくNSClipView)の周りにフォーカスリングを描画しようとしています。これにより、カスタムビューがドラッグドロップホバーを受信すると、スクロールビューにフォーカスが表示されます。一体どうやってこれを行うのですか?NSScrollViewをサブクラス化する必要はありません...そうですか?
cocoa - NSScrollView のスクロール位置
現在、NSScrollView に NSView があります。NSView は大きく、内部のオブジェクトを管理するにはスクロールする必要があります。
スクロールせずに NSView の中央に静的な四角形を描画したい。NSView の drawRect メソッドでスクロール ポイント (NSClipPoint?) を取得して、drawRect の最後のステップで四角形を描画して上に表示できるようにしたいと考えています。
ドキュメントを調べたところ、スクロールポイントを設定する方法しか見つかりませんでした。どうすればそのポイントを得ることができますか?