我正在尝试创建一个UICollectionView,其宽度/高度和坐标是使用AutoLayout (使用SnapKit)定义的。当使用默认的UICollectionView构造函数时,它会失败,原因如下:
原因:“必须使用非零布局参数初始化UICollectionView”
唯一允许传入布局的构造函数也需要frame,因此我尝试使用CGRectZero作为frame的值,如下所示:
collectionView = UICollectionView(frame: CGRectZero, collectionViewLayout: layout)然后,我使用SnapKit设置如下所示的约束:
collectionView?.snp_makeConstraints { make -> Void in
make.width.equalTo(view)
make.height.equalTo(300)
make.top.equalTo(someOtherView)
}但是,当这样做时,UICollectionView永远不会呈现。事实上,我根本没有看到数据源被调用。
对于如何在AutoLayout中使用UICollectionView,或者我可能做错了什么,有什么想法吗?
发布于 2015-08-04 17:26:30
下面的代码对我来说很好,我有一个红色和空的集合视图。
Xcode 7 beta 4 - Swift 2.0 - AutoLayout syntax from iOS 9
override func viewDidLoad() {
super.viewDidLoad()
let collectionView = UICollectionView(frame: CGRectZero, collectionViewLayout: UICollectionViewLayout())
collectionView.translatesAutoresizingMaskIntoConstraints = false
collectionView.backgroundColor = UIColor.redColor()
self.view.addSubview(collectionView)
collectionView.widthAnchor.constraintEqualToAnchor(self.view.widthAnchor).active = true
collectionView.heightAnchor.constraintEqualToConstant(300).active = true
collectionView.topAnchor.constraintEqualToAnchor(self.view.topAnchor).active = true
}我从未使用过SnapKit,但我确实知道它。我的代码中提供的语法几乎与您的示例中的语法相同。因此,这只是一条线索,说明SnapKit或您如何使用它有问题。
希望这能对你有所帮助。
https://stackoverflow.com/questions/31814943
复制相似问题