【问题标题】:Why the UIImageView does not fill the entire CollectionViewCell even I have all the constraints为什么 UIImageView 没有填满整个 CollectionViewCell 即使我有所有的约束
【发布时间】:2016-06-02 15:46:15
【问题描述】:

我有一个水平的UICollectionView,每个单元格都有一个UIImageView。当我将 UIImageView 定位在单元格内时:

故事板看起来像这样(注意UIImageView 占据了UICollectionViewCell 的整个空间,标识符为postInnerCell)

我想我已经正确地使用 autoLayout 设置了约束,UIImageView 的每一侧都固定在UICollectionViewCell 的边缘。 像这样

但是,当我运行模拟器时,它看起来像这样:

图片没有填满collectionViewCell的整个空间(背景为灰色)。 UIImageView的内容模式在界面生成器中设置为方面填充。

这是我的视图层次结构:

**注意整个UICollectionView是tableView的一个单元格(基本上,我试图完成的是tableView的每一行都是一个水平滑块)。我不确定这是问题所在。任何人都知道为什么会出现这样的问题。 **

【问题讨论】:

  • 也许你需要检查你的视图内容模式,必须是方面填充
  • @ReinierMelian,你的意思是imageView的内容模式,我已经设置好了,正如我的问题中提到的
  • 你能添加一些代码来看看发生了什么吗?对不起我之前的评论
  • 我认为你应该在帖子内部单元格(集合视图的单元格)上勾选剪辑子视图选项

标签: ios swift uiimageview autolayout uicollectionview


【解决方案1】:

事实证明,在collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) 方法中返回单元格之前,我需要通过调用cell.layoutIfNeeded() 重新布局子视图。感谢这里UICollectionViewCell content wrong size on first load的回答的贡献@

【讨论】:

    【解决方案2】:

    将图像视图的Content hugging priority设置为Low (250)

    【讨论】:

      【解决方案3】:

      IIRC,单元格的内容视图将在不触发 AutoLayout 的情况下调整大小,因此您必须手动触发布局传递(例如 .needsLayout = true 或将内容视图中的约束添加到单元格

      【讨论】:

      • 从内容视图到单元格添加约束是什么意思,你的意思是contentView到collectionview之间的约束?
      • 您拥有的视图层次结构是:集合视图 > 单元格 > 内容视图 > 图像视图。我说的是从内容视图到单元格的约束。试试视图调试器看看我在说什么。
      猜你喜欢
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多