NSScrollView 内容大小不正确

Posted

技术标签:

【中文标题】NSScrollView 内容大小不正确【英文标题】:NSScrollView incorrect content size 【发布时间】:2010-11-19 23:55:21 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

我从 -awakeFromNib 调用它【参考方案3】:

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

【讨论】:

以上是关于NSScrollView 内容大小不正确的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 NSScrollView 的内容大小?

NSTextView 和/或 NSScrollView 的自动调整大小

根据表中的行数调整 NSTableView 或 NSScrollView 的大小

如何在放大的 NSScrollView 中修复 NSTextView 的奇怪大小

NSView Subviews 中断拖拽操作

NSImageView:水平适应容器宽度,垂直纵横比