2016-07-06 7 views
0

消えます。これがどうして起こっているのか、セクションヘッダとカスタムレイアウトの両方をどのように持つことができるのでしょうか?UICollectionViewDelegateFlowLayoutは、私がCollectionViewDelegateFlowLayoutを追加するまで</p> <p>すべてがうまく働いていた、それは私のセクションヘッダーが消えて作られた(以下のコードを参照してください)私は、単純なコレクションビューを作成し、ダミーデータを追加したセクションヘッダは

コード:

import UIKit 

private let reuseIdentifier = "Cell" 

class HomeCollectionViewController: UICollectionViewController { 

var items = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20"] 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Setup a layout 
    setupCollectionViewLayout(minimumInteritemSpacing: 0, minimumLineSpacing: 0) 
} 


// MARK: UICollectionViewDataSource 

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
    // #warning Incomplete implementation, return the number of sections 
    return 2 
} 


override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return items.count 
} 

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell 

    // Configure the cell 
    cell.myLabel.text = items[indexPath.item] 

    return cell 
} 

override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView { 
    let headerView = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "Header", forIndexPath: indexPath) as! MyCollectionReusableView 

    headerView.sectionLabel.text = "Toto" 

    return headerView 

} 

func setupCollectionViewLayout(minimumInteritemSpacing minimumInteritemSpacing: CGFloat, minimumLineSpacing: CGFloat) { 
    let layout = UICollectionViewFlowLayout() 
    layout.minimumInteritemSpacing = minimumInteritemSpacing 
    layout.minimumLineSpacing = minimumLineSpacing 
    collectionView?.collectionViewLayout = layout 
} 

} 

// ---------------------------------------------------------------------------------- 
// MARK: - UICollectionViewDelegateFlowLayout 
// ---------------------------------------------------------------------------------- 

extension HomeCollectionViewController: UICollectionViewDelegateFlowLayout { 

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 

    switch UIDevice.currentDevice().userInterfaceIdiom { 
    case .Phone: 
     return CGSize(width: self.view.frame.width, height: 100.0) 
    case .Pad: 
     return CGSize(width: self.view.frame.width/2.0, height: 100.0) 
    default: 
     return CGSize(width: self.view.frame.width, height: 100.0) 
    } 


} 
} 
+1

を私は全くわからないが、私はあなたが 'setHeaderReferenceSize(your_size)を呼び出す必要がありだと思う' 'にUICollectionViewFlowLayout'オブジェクトです。 – avismara

答えて

1

私はそれを@にavismaraのアドバイスのおかげで行うことができました。カスタムレイアウトを使用する場合

あなたはそうのようなあなたのレイアウト上のサイズを指定する必要があります。

// Supposing you have created a layout, add: 
layout.headerReferenceSize = CGSizeMake(HEADER_WIDTH, HEADER_HEIGHT) 
関連する問題

 関連する問題