【发布时间】:2016-08-27 01:13:40
【问题描述】:
我正在尝试使用垂直方向的流布局设置 NSCollectionView。为了快速测试数据源,我分别从collectionView(_:numberOfItemsInSection:) 和collectionView(_:itemForRepresentedObjectAtIndexPath:) 返回静态数字和视图。
方法如下:
func collectionView(collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
return 2
}
func collectionView(collectionView: NSCollectionView,
itemForRepresentedObjectAtIndexPath indexPath: NSIndexPath) -> NSCollectionViewItem {
let item = NSCollectionViewItem()
let view = NSView()
item.view = view
view.wantsLayer = true
view.layer?.backgroundColor = CGColorCreateGenericGray(0, 0.5)
view.translatesAutoresizingMaskIntoConstraints = false
view.widthAnchor.constraintEqualToConstant(100).active = true
view.heightAnchor.constraintEqualToConstant(100).active = true
return item
}
基本上,我总是返回 2 个全黑且不透明度为 50% 的 NSCollectionViewItem。当我运行应用程序时,它会将两个视图放在一起。
这是显示两个视图的分解图:
每个项目的大小设置为 50x50,每个方向的最小间距为 10。
我错过了什么?是什么让这些视图被隔开?在documentation 中,它说:
通常,您可以使用此类的属性指定项目的大小及其间距。如果要自定义项目的值,请在指定为集合视图的委托的对象中实现 NSCollectionViewDelegateFlowLayout 协议的方法。
我没有实现这个委托,所以它不应该使用我在界面构建器中输入的值(50x50 和 10 间距)吗?
【问题讨论】:
-
另外,你是怎么做爆炸的?这真的很酷......虽然它对我的重叠问题没有帮助
-
它被称为调试视图层次结构。看看这个:stackoverflow.com/questions/28657634/…
标签: swift cocoa nscollectionview