我正在尝试以编程方式设置UICollectionViewLayout
。我也使用了UICollectionView
而不使用 Storyboard ,也没有设置它的约束。
我已经按照Ray Wenderlich教程对主题进行了一些更改,以使代码适应Swift 3(就像AZCoder2所做的那样 https://github.com/AZCoder2/Pinterest)。
由于所有这些示例都使用 Storyboard ,因此,我还介绍了一些更改以创建UICollectionView
及其UICollectionViewLayout
:
collectionViewLayout = PinterestLayout()
collectionViewLayout.delegate = self
collectionView = UICollectionView.init(frame: .zero, collectionViewLayout: collectionViewLayout)
结果:我什么也看不到。如果我用Apple提供的
UICollectionViewLayout
更改UICollectionViewFlowLayout
(UICollectionViewLayout
),至少我可以看到包含其内容的单元格。如果我进行了一些更改并使用 Storyboard ,那么一切都很好,但这不是我想要的方法。整个 View 以编程方式进行,而集合 View 是其中的一部分。我想念什么?与我实例化ojit_code的方式有关吗?我是否必须注册某些内容(例如,因为我需要注册可重复使用的单元格)?
最佳答案
您如何创建一个变量来像这样为您创建流程布局?
var flowLayout: UICollectionViewFlowLayout {
let _flowLayout = UICollectionViewFlowLayout()
// edit properties here
_flowLayout.itemSize = CGSize(width: 98, height: 134)
_flowLayout.sectionInset = UIEdgeInsetsMake(0, 5, 0, 5)
_flowLayout.scrollDirection = UICollectionViewScrollDirection.horizontal
_flowLayout.minimumInteritemSpacing = 0.0
// edit properties here
return _flowLayout
}
然后可以通过调用变量进行设置。
self.collectionView.collectionViewLayout = flowLayout // after initializing it another way
// or
UICollectionView(frame: .zero, collectionViewLayout: flowLayout)