为啥 UIImageView 没有填满整个 CollectionViewCell 即使我有所有的约束
Posted
技术标签:
【中文标题】为啥 UIImageView 没有填满整个 CollectionViewCell 即使我有所有的约束【英文标题】: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的内容模式,我已经设置好了,正如我的问题中提到的 你能添加一些代码来看看发生了什么吗?对不起我之前的评论 我认为你应该在帖子内部单元格(集合视图的单元格)上勾选剪辑子视图选项 【参考方案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之间的约束? 您拥有的视图层次结构是:集合视图 > 单元格 > 内容视图 > 图像视图。我说的是从内容视图到单元格的约束。试试视图调试器看看我在说什么。以上是关于为啥 UIImageView 没有填满整个 CollectionViewCell 即使我有所有的约束的主要内容,如果未能解决你的问题,请参考以下文章
UIButton 内的 UIImageView 具有默认填充 - 如何删除?