【发布时间】:2016-11-06 18:20:30
【问题描述】:
我有一个集合视图控制器,我这样设置它:
class r : UICollectionViewCell {
override var bounds: CGRect {
didSet {
contentView.frame = bounds
}
}
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "1", for: indexPath) as? r
cell.backgroundColor = UIColor.red
return cell
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
我希望单元格的宽度等于屏幕的宽度,因此在情节提要中我编辑了单元格的宽度:
但我有一个问题:
如果我在 iPhone 6 模拟器上执行它,我会得到这个(这是我想要在所有设备上得到的):
但如果在 iPad Pro 上执行,我会得到:
我不明白为什么。 你能帮帮我吗?
P.S 由于某些原因我不想使用 tableview
【问题讨论】:
-
在运行时,单元格的大小与您在界面构建器中设置的大小保持一致。它不适应设备的屏幕尺寸。即使是自动布局约束也无法解决这个问题。您需要更新集合视图布局的项目大小。
-
但是为了在运行时更新单元格的大小,我必须重写方法 sizeForItemAt 并手动计算单元格的内容大小,或者有一种方法可以使用情节提要自动执行此操作?
-
不,你不能在情节提要中这样做。您必须在代码中手动计算。您需要告诉单元格中将显示哪些内容,然后我可以帮助您计算单元格的高度。
-
我不明白,因为我不会自动这样做。使用 uitablewview 足以设置估计高度,然后它会根据内容自动执行,为什么使用集合视图我不这样做?你怎么帮我?
-
嗯,就是这样。 UICollectionViews 没有这样的东西。告诉我你的单元格的内容是什么。我可能会建议你一个解决方案。
标签: ios iphone swift xcode uicollectionview