【发布时间】:2020-06-06 03:38:23
【问题描述】:
下面的代码可以使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
【问题讨论】:
标签: ios swift uicollectionview uicollectionviewcell uicollectionviewlayout