我想更改CollectionViewController
的标题的高度。
我已经知道我可以使用这样的代码:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
return CGSize(width: collectionView.frame.size.width, height: 250)
}
我想这样做,但是直接在UICollectionReusableView(标题视图)中。
有没有允许的功能?
答案 0 :(得分:1)
要动态更改标题大小,请使用 headerReferenceSize UICollectionViewFlowLayout属性。
let collectionViewLayout = UICollectionViewFlowLayout()
collectionViewLayout.headerReferenceSize = CGSize(width: view.frame.size.width, height: 80)
确保不包括 referenceSizeForHeaderInSection 委托方法以使其起作用。
答案 1 :(得分:0)
您需要添加UICollectionViewDelegateFlowLayout
。
class ViewController: UIViewController, UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
return CGSize(width: collectionView.frame.width, height: 40)
}
}
答案 2 :(得分:0)
collectionview中的标题与tableview不同,因为您需要创建不同类型的单元格,该单元格名为UICollectionReusableView
,使用此名称创建一个类,然后在您的collectionview中检查以下选项:
enter image description here
然后您可以使用以下函数在代码上调用它:
override func collectionView(_ collectionView: UICollectionView,
viewForSupplementaryElementOfKind kind: String,
at indexPath: IndexPath) -> UICollectionReusableView {
//1
switch kind {
//2
case UICollectionElementKindSectionHeader:
//3
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind,
withReuseIdentifier: "UICollectionReusableViewID",
for: indexPath) as! UICollectionReusableViewClass
//Customize
return headerView
default:
//4
assert(false, "Unexpected element kind")
}
}
所有积分RayWenderLich教程:https://www.raywenderlich.com/1404-uicollectionview-tutorial-reusable-views-selection-and-reordering