【问题标题】:Constraints don't work on UICollectionView约束不适用于 UICollectionView
【发布时间】:2018-12-08 11:01:29
【问题描述】:

在我的应用程序中,有三个“UICollectionViews”。如果我为它们设置constraints,它们会产生一些奇怪的东西......'UICollectionViews'会融合在一起,只显示其中一个,并且UICollectionViewCells 在屏幕变大时不会被拉伸(iPad / iPhone +)。

在“UICollectionViews”上使用约束时有什么特别需要考虑的吗?

这是一张图片,可以更清楚地说明我的意思:

【问题讨论】:

  • 集合视图的尾随和前导约束相等的项目是什么?
  • 我还没有设置任何约束,因为我所做的没有奏效。我希望左侧 CV 中有 48 个项目,另外两个中有 12 个项目
  • 这看起来像是你一个月前的问题——但你没有跟进? stackoverflow.com/questions/53297580/…
  • 我尝试了所有方法,但由于我是一名新编码员,我不知道我是否以正确的方式做到了
  • @SWIFTstuff - 你展示这个的方式,在每个集合视图上设置适当的宽度约束。如果那不这样做,你需要更清楚你想要做什么。显示您希望它在 iPhone iPad 上的外观...以及您希望它在横向方向中的外观(如果不同)。

标签: ios swift uicollectionview autolayout constraints


【解决方案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?
猜你喜欢
  • 2014-06-07
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 2017-01-22
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多