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