【发布时间】:2014-07-08 01:00:48
【问题描述】:
我在一个 .xib 中有一个 NSCollectionView 和 另一个 .xib 中该集合视图的子视图集合视图项
我正在尝试向我的集合视图项添加约束,以便 让它来
- 将边缘与超级视图的视图对齐
- 根据超级视图调整自身大小
第二个 .xib 中的集合视图项是一个带有约束的 NSTableView,如附件所示。
启动时我得到以下信息
- 父视图,即 NSCollectionView 大于其子视图。
- 如果我调整整个窗口的大小并使其更小,NSCollectionView 也会自行调整大小,但子视图不会。见第二个附件。
【问题讨论】:
-
项目通常将它们的大小提供给集合视图,然后集合视图将它们布置在网格中。让项目尝试使自己符合集合视图提供的大小没有多大意义。集合视图如何选择尺寸?也就是说,您可以在集合视图上设置最小和最大项目大小。
-
我明白了。可以用 NSScrollView 来实现吗?我知道 NSCollectionView 嵌入在 NSScrollView 中
-
实现什么?您希望如何确定集合视图中项目的大小?你可以把它们做成你想要的任何尺寸。
-
NSCollectionView不会做你想做的事。鉴于相当简单的单行布局,您可以使用NSStackView。您将负责为每个表示的对象添加一个视图,但堆栈视图会将它们水平放置。在垂直方向上,您可以在包含视图的边缘和堆栈视图的边缘之间设置约束。 -
滚动视图除了为比它更大的内容视图提供滚动外,不会做任何事情。您可以通过创建一个普通的
NSView作为容器,然后用子视图填充它,从而在道德上等同于堆栈视图。设置布局约束以保持子视图在其中按您喜欢的方式排列,并保持普通视图足够宽以包含它们。将普通视图设置为与剪辑视图一样高,将子视图设置为与视图一样高。确保子视图的高度至少相对于视图到剪辑视图约束的优先级是灵活的。
标签: cocoa autolayout