2016-08-27 46 views
3

我想设置一个垂直方向的流布局的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个NSCollectionViewItems是全黑的,50%的不透明度。当我运行应用程序时,它将两个视图放在一起。

app screenshot showing a single dark gray square

下面是一个分解示出这两个视图:

enter image description here

每个项被设置为具有在每个方向上的尺寸50×50的,和10的最小间距。

我错过了什么?什么使这些视图分开?在documentation中,它表示:

通常,您可以使用此类的属性指定项目的大小及其间距。如果要为项目自定义值,请在指定为集合视图委托的对象中实现NSCollectionViewDelegateFlowLayout协议的方法。

我没有实现这个委托,所以不应该与我在接口构建器(50x50和10间距)放置的值一起工作吗?

+0

另外,你是如何做爆炸?这真的很酷...虽然它不能帮助我重叠的问题 – tofutim

+0

它被称为调试视图层次结构。检查了这一点:https://stackoverflow.com/questions/28657634/xcode-cant-find-debug-view-hierarchy-button#28658019 –

回答

0

我仍然不知道确切的问题是什么,但在这里我就是这样做来解决它:

  1. 创建NSCollectionViewItem子类相关联的厦门国际银行(姑且称之为子类Item
  2. 添加集查看项目在Interface Builder文档大纲
  3. 更改类集合视图项目到我的自定义子类(Item
  4. 变化collectionView(_:itemForRepresentedObjectAtIndexPath:)下面的代码:

func collectionView(collectionView: NSCollectionView, 
        itemForRepresentedObjectAtIndexPath indexPath: NSIndexPath) -> NSCollectionViewItem { 
    return collectionView.makeItemWithIdentifier("Item", forIndexPath: indexPath) 
} 

现在我不仅能欣赏奠定了他们应该,但他们自定义的,而不只是灰色框!以下this教程帮助我解决了这个问题。

如果有人想刺探解释实际问题是什么,我会保持开放并接受真正回答问题的东西。

+0

你有没有获得更多的见解呢?我的自定义视图被调用,但它们都是重叠的! – tofutim

+0

我没有,对不起! –