gpt4 book ai didi

ios - UICollectionViewDelegateFlowLayout 使节标题消失

转载 作者:行者123 更新时间:2023-11-29 00:50:07 25 4
gpt4 key购买 nike

我创建了一个简单的 Collection View 并添加了虚拟数据(参见下面的代码)

一切正常,直到我添加了 CollectionViewDelegateFlowLayout,它使我的部分标题消失了。知道为什么会发生这种情况以及我如何才能同时拥有我的节标题和自定义布局吗?

代码:

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)
}


}
}

最佳答案

感谢@avismara 的建议,我设法做到了。

使用自定义布局时,您必须像这样在布局上指定尺寸:

// Supposing you have created a layout, add:
layout.headerReferenceSize = CGSizeMake(HEADER_WIDTH, HEADER_HEIGHT)

关于ios - UICollectionViewDelegateFlowLayout 使节标题消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38226165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com