我在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;