我正在尝试以编程方式设置UICollectionViewLayout。我使用的UICollectionView也没有使用故事板,还设置了它的约束。
我遵循了关于这个主题的Ray Wenderlich教程,并对代码进行了一些修改,以适应Swift 3(就像AZCoder2对https://github.com/AZCoder2/Pinterest所做的那样)。
由于所有这些示例都使用故事板,因此我还介绍了一些用于创建UICollectionView及其UICollectionViewLayout的更改
collectionViewLayout = PinterestLayout()
collectionViewLayout.delegate = self
collectionView = UICollectionView.init(frame: .zero, collectionViewLayout: collectionViewLayout)结果是:我什么也看不见。如果我用苹果提供的(UICollectionViewFlowLayout)更改UICollectionViewLayout,至少我可以看到单元格及其内容。如果我实现一些更改并使用故事板,一切都很好,但这不是我想要的方式。整个视图是以编程方式创建的,集合视图是其中的一部分。
我遗漏了什么?这与我实例化UICollectionViewLayout的方式有关吗?我是否必须注册一些东西(例如,因为我需要注册可重用的单元)?
发布于 2017-07-13 20:51:56
创建一个为您创建流布局的变量如何?
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)发布于 2017-07-14 09:12:36
做我想做的事情是可能的。基本上,遵循我在自己的问题中建议的教程,并按如下方式设置集合视图及其视图布局:
collectionViewLayout = PinterestLayout()
collectionViewLayout.delegate = self
collectionView = DynamicCollectionView.init(frame: .zero, collectionViewLayout: collectionViewLayout)注意,我使用的是DynamicCollectionView (而不是UICollectionView)。这个类不是由苹果公司提供的:我已经使用this post中提供的代码创建了自己的类。
请记住,这种方法是在使用约束以编程方式创建视图时使用的。(可能还有其他用例)
发布于 2018-08-22 15:33:40
我想这会起作用的。
override init(collectionViewLayout layout: UICollectionViewLayout) {
super.init(collectionViewLayout: layout)
collectionView?.collectionViewLayout = YourCollectionViewLayout()
}https://stackoverflow.com/questions/45069271
复制相似问题