UICollectionView 始终自动调整单元格大小。不使用委托返回的尺寸
UICollectionView always auto sizing cells. Not using sizes returned from delegate
最近升级到 Xcode 11 / iOS13。在一个新的视图控制器上工作。 UICollectionView 正在调用我的 sizeForItemAtPath 委托方法,但集合视图似乎总是根据约束选择自我调整大小。但我不想这样!
我尝试将 estimatedSize 设置为 1x1 以尝试解决此问题。没用。我已经在所有委托/数据源方法上设置了断点,没有发现任何异常情况。
我也遇到了这个(`systemLayoutSizeFittingSize` not called on iOS 13),也许我的问题是相关的?我可以通过覆盖 link - 中的 systemFittingSize 方法来解决这个问题,但我真的不应该这样做。
我发现奇怪的是,任何现有的带有集合视图的 xib 都按预期工作——唯一的区别似乎是我用 Xcode 11 VS Xcode 10 创建单元格/集合视图.
我还注意到 Xcode11 中的 UICollectionViewCell 元素包含一个 "Content View" - 但 Xcode 10 个 xib 没有内容视图。
还有其他人遇到过这种情况吗?
界面生成器中有一个估计大小的设置 - 将其设置为 None。
改为None:
我实际上从未使用过 XIB 或流布局,但我目前正在处理一些自定义集合视图:据我所知,在大多数情况下,"choosing self-sizing" 并不是集合视图本身,就是布局对象。
集合视图本身或其委托没有任何方法来询问单元格的首选大小。另一方面,流布局确实如此。 It is known 流式布局在内部检查单元格是否使用自动布局,如果单元格使用自动布局,它会忽略委托提供的信息。
可以通过子类化布局并在 shouldInvalidateLayout(forPreferredLayoutAttributes:, withOriginalAttributes:)
中返回 false 来选择退出该行为。
最近升级到 Xcode 11 / iOS13。在一个新的视图控制器上工作。 UICollectionView 正在调用我的 sizeForItemAtPath 委托方法,但集合视图似乎总是根据约束选择自我调整大小。但我不想这样!
我尝试将 estimatedSize 设置为 1x1 以尝试解决此问题。没用。我已经在所有委托/数据源方法上设置了断点,没有发现任何异常情况。
我也遇到了这个(`systemLayoutSizeFittingSize` not called on iOS 13),也许我的问题是相关的?我可以通过覆盖 link - 中的 systemFittingSize 方法来解决这个问题,但我真的不应该这样做。
我发现奇怪的是,任何现有的带有集合视图的 xib 都按预期工作——唯一的区别似乎是我用 Xcode 11 VS Xcode 10 创建单元格/集合视图.
我还注意到 Xcode11 中的 UICollectionViewCell 元素包含一个 "Content View" - 但 Xcode 10 个 xib 没有内容视图。
还有其他人遇到过这种情况吗?
界面生成器中有一个估计大小的设置 - 将其设置为 None。
改为None:
我实际上从未使用过 XIB 或流布局,但我目前正在处理一些自定义集合视图:据我所知,在大多数情况下,"choosing self-sizing" 并不是集合视图本身,就是布局对象。
集合视图本身或其委托没有任何方法来询问单元格的首选大小。另一方面,流布局确实如此。 It is known 流式布局在内部检查单元格是否使用自动布局,如果单元格使用自动布局,它会忽略委托提供的信息。
可以通过子类化布局并在 shouldInvalidateLayout(forPreferredLayoutAttributes:, withOriginalAttributes:)
中返回 false 来选择退出该行为。