1

我有一个 NSScrollView ,它是自定义 NSView 子类的父级。子类使用 NSScrollView 的contentSize方法来布局其子视图。

问题是在第一次启动时,NSScrollView 报告 contentSize 错误。它报告的大小比它应该的大小(滚动条的宽度)大 15 像素。所以在我看来,它返回的是 contentSize 而没有考虑到滚动条的宽度;但是,只要我调整滚动视图的框架(通过调整大小等),就会正确报告内容大小。这似乎只是初始启动时的一个问题。

是否应该将此报告为错误,是否有任何好的解决方案?我可以使用在布局期间执行检查的肮脏方式来查看它是否是第一次调用该方法,然后从内容大小中减去 15px,但如果有更好的东西,那将不胜感激。

4

3 回答 3

2

我刚刚遇到了一个类似的问题,我解决它的方法是在滚动视图的内容视图(在你的情况下是自定义 NSView)上观察通知 NSViewFrameDidChangeNotification。

当从滚动视图中添加/删除滚动条时会触发此通知,此时您可以重新定位视图的内容。

于 2011-08-22T06:00:02.627 回答
0

您是否使用自动隐藏/显示滚动条的选项?

于 2013-11-24T00:05:13.417 回答
0

你什么时候检查内容大小?它是在您的视图从 nib 文件中实例化时发生的,还是在 nib 完全取消归档后发生的?

我可能会做的是从-viewDidMoveToWindow:或调用您的布局方法-awakeFromNib

于 2010-11-20T02:11:34.803 回答