Swift:Header 个 UICollectionViewController 与单元格重叠
Swift: Header of UICollectionViewController overlaps cells
我有一个 UICollectionViewController
,想添加一个自定义 header。
我在 CollectionViewController 的 Interface Builder 中检查了 Section Header
,并在我的子类中实现了 viewForSupplementaryElementOfKind
函数。
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
switch kind {
case UICollectionElementKindSectionHeader:
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "myHeaderIdentifier", for: indexPath)
// !! NOT WORKING PROPERLY
// sectionHeader overlaps other cells
headerView.backgroundColor = UIColor(hue: 0.9, saturation: 1.0, brightness: 0.9, alpha: 1.0)
headerView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 250.0)
return headerView
default:
assert(false, "Unexpected element kind")
}
}
更改生效,但 header(下面屏幕截图中的粉红色区域)现在与 collectionView 中的常规单元格重叠。
我做错了什么?
感谢任何帮助!
public func layoutAttributesForSupplementaryElementOfKind(kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes?
这里相信你应该可以设置frame/height
UICollectionViewFlowLayout
中还有 headerReferenceSize
,您可以在创建 collectionView
时设置它是否是静态的
使用 UICollectionViewDelegateFlowLayout
协议中的此方法:
optional func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
referenceSizeForHeaderInSection section: Int) -> CGSize {
return CGSize(width: UIScreen.main.bounds.width, height: 250.0)
}
确保将您的 class 设置为流布局的委托。您可以找到更多信息 here.
我有一个 UICollectionViewController
,想添加一个自定义 header。
我在 CollectionViewController 的 Interface Builder 中检查了 Section Header
,并在我的子类中实现了 viewForSupplementaryElementOfKind
函数。
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
switch kind {
case UICollectionElementKindSectionHeader:
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "myHeaderIdentifier", for: indexPath)
// !! NOT WORKING PROPERLY
// sectionHeader overlaps other cells
headerView.backgroundColor = UIColor(hue: 0.9, saturation: 1.0, brightness: 0.9, alpha: 1.0)
headerView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 250.0)
return headerView
default:
assert(false, "Unexpected element kind")
}
}
更改生效,但 header(下面屏幕截图中的粉红色区域)现在与 collectionView 中的常规单元格重叠。
我做错了什么? 感谢任何帮助!
public func layoutAttributesForSupplementaryElementOfKind(kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes?
这里相信你应该可以设置frame/height
UICollectionViewFlowLayout
中还有 headerReferenceSize
,您可以在创建 collectionView
时设置它是否是静态的
使用 UICollectionViewDelegateFlowLayout
协议中的此方法:
optional func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
referenceSizeForHeaderInSection section: Int) -> CGSize {
return CGSize(width: UIScreen.main.bounds.width, height: 250.0)
}
确保将您的 class 设置为流布局的委托。您可以找到更多信息 here.