滚动视图中的中心视图

时间:2015-01-29 07:40:42

标签: cocoa nsview nsscrollview nsautolayout nsscroller

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

0 个答案:

没有答案