约束不适用于 UICollectionView
Posted
技术标签:
【中文标题】约束不适用于 UICollectionView【英文标题】:Constraints don't work on UICollectionView 【发布时间】:2018-12-08 11:01:29 【问题描述】:在我的应用程序中,有三个“UICollectionViews
”。如果我为它们设置constraints
,它们会产生一些奇怪的东西......'UICollectionViews
'会融合在一起,只显示其中一个,并且UICollectionViewCells
在屏幕变大时不会被拉伸(iPad / iPhone +)。
在“UICollectionViews
”上使用约束时有什么特别需要考虑的吗?
这是一张图片,可以更清楚地说明我的意思:
【问题讨论】:
集合视图的尾随和前导约束相等的项目是什么? 我还没有设置任何约束,因为我所做的没有奏效。我希望左侧 CV 中有 48 个项目,另外两个中有 12 个项目 这看起来像是你一个月前的问题——但你没有跟进? ***.com/questions/53297580/… 我尝试了所有方法,但由于我是一名新编码员,我不知道我是否以正确的方式做到了 @SWIFTstuff - 你展示这个的方式,在每个集合视图上设置适当的宽度约束。如果那不这样做,你需要更清楚你想要做什么。显示您希望它在 iPhone 和 iPad 上的外观...以及您希望它在横向方向中的外观(如果不同)。 【参考方案1】:看起来像单元格大小和视图大小不匹配,因为您没有提到单元格。
在这种情况下,做一个Collection View Flow Layout的出口并相应地调整单元格大小。
@IBOutlet weak var collView: UICollectionView!
@IBOutlet weak var collLayout: UICollectionViewFlowLayout!
override func viewDidLayoutSubviews()
var w = self.view.frame.width
if #available(ios 11.0, *)
w = self.view.safeAreaLayoutGuide.layoutFrame.width
let padding:CGFloat = 20
let spacing:CGFloat = 5
let columns:CGFloat = 6
let cw = ceil((w - padding) / columns)
collLayout.itemSize = CGSize(width: cw - spacing*2, height: cw - spacing*2)
collLayout.minimumLineSpacing = spacing
collLayout.minimumInteritemSpacing = spacing
super.viewDidLayoutSubviews()
【讨论】:
我将此部分添加到我的代码中并收到此错误:2018-12-11 15:25:55.156018+0100 MastermindProjekt[8501:144983] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[UICollectionView setItemSize:]:无法识别的选择器发送到实例 0x7faf8e84c400' 如何连接 UICollectionViewFlowLayout?以上是关于约束不适用于 UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章