の中に が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;