3

の中に がNSView埋め込まれていNSScrollViewます。

アプリで倍率を変更するとき、制約を調整して を呼び出してビューのフレームを変更していますlayoutSubtree:

埋め込みビューのサイズを変更した後、ビューの同じ領域を中央に配置したいと思います。

次のコードはうまくいくはずです -
スクローラーは実際に更新されたように見えます。ただし、スクロールビューは変更された位置を認識していないようです。

(更新された) ビューを手動でスクロールし始めると、コードを介して変更された位置から、ビューのスクロール位置を反映している実際の位置にスクロール バーの位置が「ジャンプ」します。

reflectScrolledClipView:コードでスクローラーを設定した後、の逆が必要なように感じます..

擬似コード:

 double hScrollPos = NSScrollView.horizontalScroller.doubleValue;
 double vScrollPos = NSScrollView.verticalScroller.doubleValue;

 [view updateFrameSizeAndStuff];
 [view invalidateIntrinsicContentSize];

 // this seems to early though:
 NSScrollView.horizontalScroller.doubleValue = hScrollPos;
 NSScrollView.verticalScroller.doubleValue = vScrollPos;
4

0 に答える 0