UICollectionViewLayout

UICollectionViewLayout

我正在尝试以编程方式设置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)

09-26 01:21