【发布时间】:2014-01-23 22:58:57
【问题描述】:
我有一个自定义的 NSView 子类,我把它放在一个 NSScrollView 中,基本工作正常。它总是占据其可用空间的整个宽度,因此它的约束占据了滚动视图的整个宽度。它占用多少垂直空间取决于它必须显示多少数据,因此它只能垂直滚动。这一切都很棒。
问题是,如果我的自定义视图需要的空间比它所在的 NSScrollView 少,它不会扩展以填充可见区域。在数据少于可见区域的情况下,我希望它向下扩展 - 以便空间可用作拖放目标等。
我已尝试更改其“拥抱优先级”。我尝试添加一个约束以保持底部低于 NSClipView 的底部。我想不出任何基于约束的解决方案来解决这个问题(尽管我也没有排除这种可能性)。
我尝试在 NSScrollView 更改大小时捕获通知,并在自定义视图的框架太小时调整它,但是(可能是因为我只能更改其 当前 框架,而布局系统完成所有布局稍后)我似乎也无法完成这项工作。
是否有向 NSScrollView 添加视图的技巧,以便它扩展到可见区域的底部,否则它会太短?看起来它应该很简单,而且我之前在我只是手动调用 -setFrame 的情况下完成了它,但是一旦你移动到自动布局世界,这种方法就停止工作了。
【问题讨论】:
-
您是否尝试过添加高度约束“yourView.height >= parentView.height”,其中 parentView 是剪辑视图?我遇到了与您类似的问题,以下对我有用: myView.width >= clipview.width, myview.height >= clipview.height;并摆脱 IB 错误:myview.centerXY = clipview.centerXY(在构建时删除),为 myview 的 intrinsicSize 设置一个占位符
标签: cocoa autolayout nsview nsscrollview