2016-08-27 3 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 
} 

基本的に、私は常にすべての50%の不透明度を持つ黒で2 NSCollectionViewItemsを返します。私は、アプリケーションを実行すると、それはお互いの上に両方のビューを配置しました。

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. 追加
  2. (のサブクラスItemを呼びましょう)に関連するXIBとNSCollectionViewItemサブクラスを作成します。インタフェースビルダでのドキュメントアウトライン
  3. 変更するコレクションアイテムの表示私のカスタムサブクラスのコレクションアイテムの表示のクラス(Item
  4. 変更し、次へcollectionView(_:itemForRepresentedObjectAtIndexPath:)のコード:

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

今、私は、彼らが必要として、レイアウトビューを持っていないだけで、彼らはカスタムだけでなく、灰色のボックスです!その後thisチュートリアルは私が問題を解決するのを助けました。

誰かが実際の問題の説明に刺すようなことをしたいと思ったら、私はこれを開いたままにして、実際に質問に答えます。

+0

あなたはこれについてより多くの洞察を得ましたか?私のカスタムビューが呼び出されますが、それらはすべて重複しています! – tofutim

+0

私は、申し訳ありませんでした! –

関連する問題