NSScrollView 混乱

Posted

技术标签:

【中文标题】NSScrollView 混乱【英文标题】:NSScrollView Confusion 【发布时间】:2014-08-06 10:07:07 【问题描述】:

请原谅我在NSScrollView 课程上提出了一个相当模糊的问题。尽管已经阅读了很多内容,但我并没有真正理解它们。

我有一个NSViewController 子类,它有一个xib。在这个视图中,我加入了NSScrollView。我从视图控制器类连接了一个IBOutlet

这就是我感到困惑的地方。

NSScrollViewdocumentViewclipView 有什么区别?当添加到xib 中时,滚动视图会被赋予NSClipView。为什么?

如果我想在xib 内的滚动视图中添加子视图,我只能将视图放到NSScrollViewNSClipView 中,而不能直接放到滚动视图中。我还看到,当我调整NSClipView 的大小时,它本身会剪辑我放入的子视图,滚动条会出现在滚动视图上。但是,当我运行我的应用程序时,我无法滚动。其次,当应用程序运行时,子视图不会出现。

有人能解释一下 NSScrollView 是如何工作的吗?到目前为止,我读到的所有内容都没有让我点击它。

【问题讨论】:

【参考方案1】:

剪辑视图和滚动视图共同提供滚动行为。剪辑视图对文档视图(即您要在滚动视图中显示的视图)进行实际剪辑。

滚动/剪辑视图在很大程度上知道如何通过查询文档视图的大小来表现,因此重要的是您已将NSView-子类配置为以这种方式正确运行,方法是(通常)在任何时候调用[self setFrameSize:newSize]内容发生变化。如果你做对了,那么它应该只是工作

然而,为了解决您面临的实际问题,我需要查看一些代码,所以如果您可以在我可以查看的简单自包含 Xcode 项目中重现该问题,那么是最好的前进方式(但请注意,我目前无法查看)。

【讨论】:

谢谢!我遇到的问题是我觉得有必要将我的子视图直接放在滚动视图/剪辑视图中。我用IBOutlet 创建了一个单独的视图并将其设置为文档视图。现在一切正常!感谢您的解释。 @JoshKahane 不客气。实际上,您应该能够将视图插入滚动视图并使用 IB 使其工作。

以上是关于NSScrollView 混乱的主要内容,如果未能解决你的问题,请参考以下文章

保持 NSScrollView 固定

NSScrollView 中的自动布局约束

NSCollectionView+NSScrollView 中的鼠标悬停

如何在 NSScrollView 中强制重绘内容

NSScrollview 不以编程方式滚动?

将 NSImageView 添加到 NSScrollView