2016-08-27 83 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

我沒有,對不起! –