NSScrollView内容大小不正确

时间:2010-11-19 23:55:22

标签: objective-c cocoa nsview nsscrollview

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

问题是,首次启动时,NSScrollView报告的contentSize错误。它报告的大小比它应该多15px(卷轴的宽度)。所以在我看来,它在不考虑滚动条宽度的情况下返回contentSize;但是,只要我调整滚动视图的框架(通过调整大小等),就会正确报告内容大小。这似乎只是初次发布时的一个问题。

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

3 个答案:

答案 0 :(得分:2)

我刚遇到类似的问题,我解决它的方法是在Scroll视图的内容视图(在您的情况下是自定义NSView)中观察通知NSViewFrameDidChangeNotification。

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

答案 1 :(得分:0)

您何时查看内容大小?当您的视图是从nib文件实例化时,还是在nib完全取消归档后,是否会发生这种情况?

我可能会做的是从-viewDidMoveToWindow:-awakeFromNib

调用您的布局方法

答案 2 :(得分:0)

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