我有UICollectionView2 個部分,使用UICollectionLayoutListConfiguration. 我只想為這些特定部分之一設定標題。
收藏視圖
lazy var collectionView: UICollectionView = {
var list = UICollectionLayoutListConfiguration(appearance: .insetGrouped)
list.headerMode = .supplementary
let layout = UICollectionViewCompositionalLayout.list(using: list)
let view = UICollectionView(frame: .zero, collectionViewLayout: layout)
// REGISTER CELLS ETC...
return view
}()
資料源
dataSource.supplementaryViewProvider = { [weak self] collectionView, kind, indexPath in
guard let self = self else { return nil }
if let section = Section(rawValue: indexPath.section) {
switch section {
case .topSection:
// I DO NOT HAVE ANY HEADER FOR THIS SECTION
case .bottomSection:
switch kind {
case UICollectionView.elementKindSectionHeader:
// RETURN SECTION HEADER HERE
case UICollectionView.elementKindSectionFooter:
// I DO NOT HAVE ANY FOOTERS
default:
fatalError("SOMETHING BAD HAPPENED")
}
}
}
任何幫助是極大的贊賞。
uj5u.com熱心網友回復:
將標題高度設定為零。對于“referenceSizeForHeaderInSection”中的特定部分
uj5u.com熱心網友回復:
解決了。
我需要NSCollectionLayoutSection為UICollectionViewCompositionalLayout無法在資料源中完成的每個部分型別回傳一個。
private func setUpLayout() -> UICollectionViewLayout {
let layout = UICollectionViewCompositionalLayout { [unowned self] sectionIndex, layoutEnvironment in
let section = Section(rawValue: sectionIndex)
switch section {
case .task:
return self.setUpSection(layoutEnvironment: layoutEnvironment)
case .project:
return self.setUpHeaderSection(layoutEnvironment: layoutEnvironment)
case .completed:
return self.setUpHeaderSection(layoutEnvironment: layoutEnvironment)
default:
return self.setUpHeaderSection(layoutEnvironment: layoutEnvironment)
}
}
return layout
}
private func setUpSection(layoutEnvironment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection {
var listConfiguration = UICollectionLayoutListConfiguration(appearance: .insetGrouped)
listConfiguration.headerMode = .none
return NSCollectionLayoutSection.list(using: listConfiguration, layoutEnvironment: layoutEnvironment)
}
private func setUpHeaderSection(layoutEnvironment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection {
var listConfiguration = UICollectionLayoutListConfiguration(appearance: .insetGrouped)
listConfiguration.headerMode = .supplementary
return NSCollectionLayoutSection.list(using: listConfiguration, layoutEnvironment: layoutEnvironment)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/347596.html
標籤:ios 迅速 uicollectionview uicollectionviewcompositionallayout uicollectionlayoutli
