【问题标题】:UICollectionViewCell not forcing Cell SizeUICollectionViewCell 不强制单元格大小
【发布时间】:2019-10-18 14:33:27
【问题描述】:

我正在使用

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: 400, height: 600)
}

指定我的CollectionView 的单元格大小。它工作正常,但只要我在单元格的ContentView 内向我的UILabel 添加宽度约束(UILabel.width == ContentView.width),单元格的宽度就会缩小到UILabel 的固有宽度。

我正在使用UICollectionViewDelegateFlowLayout 和水平滚动。

如何强制ContentView 坚持我指定的单元格大小并让子视图遵循自动布局约束?

【问题讨论】:

  • 如果单元格宽度为 400,则减去 uilabel 两侧的填充并直接设置,而不是仅添加左右约束
  • 我的单元格大小实际上是根据屏幕大小计算的,所以不能按照您的方式进行。
  • 但是你写 return CGSize(width: 400, height: 600) 这意味着你所有的单元格大小应该是这样的。
  • 是的,单元格应该是 400x600,但是当我在 UILabel 上添加大小限制时不是这样。
  • 如果单元格大小是动态的,则有两个,首先您需要获取该标签的 intrinsicContentSize ,第二个是编写您的 flowLayout 并从此方法返回相应的大小

标签: swift uicollectionview autolayout uicollectionviewflowlayout


【解决方案1】:

问题是在情节提要中,您的集合视图的 Estimate Size 配置为自动:

如果您希望遵循 sizeForItemAt 实现而不是内部约束,则需要将其设置为 None。

【讨论】:

  • 谢谢。这正是问题所在。
  • 没问题,很乐意提供帮助。
猜你喜欢
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多