以下是为使sectionIndex
中的一个UICollectionViewLayout
具有与其他部分相比该部分中每个项目的宽度/高度不同而起作用的代码。我的问题是如何进一步更改此部分中第一项的宽度:
myCollectionView = UICollectionView(frame: myFrame, collectionViewLayout: generateLayout())
。
func generateLayout() -> UICollectionViewLayout {
let layout = UICollectionViewCompositionalLayout { (sectionIndex: Int,
layoutEnvironment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection? in
return self.generateStoryLayout(forSection: sectionIndex)
}
return layout
}
。
func generateStoryLayout(forSection: Int) -> NSCollectionLayoutSection {
let itemSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1.0),
heightDimension: .fractionalWidth(1.0))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
print("generate story layout for this section")
var groupSize = NSCollectionLayoutSize(
widthDimension: .absolute(180),
heightDimension: .absolute(216))
//taller row in section 1
if forSection == 1 {
groupSize = NSCollectionLayoutSize(
widthDimension: .absolute(250),
heightDimension: .absolute(300))
}
let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitem: item, count: 1)
let section = NSCollectionLayoutSection(group: group)
section.orthogonalScrollingBehavior = .continuousGroupLeadingBoundary //.groupPaging
return section
}
非常感谢您的帮助!
我分别使用一个不同的UICollectionView
,它的布局使用UICollectionViewFlowLayout
,并且为每个项目调用了函数layout:sizeForItemAt:
,因为我可以在UICollectionView
中确定它们的大小。
自定义myCollectionView
不会调用此layout:sizeForItemAt:
ViewController
确实符合UICollectionViewDelegate