uicollectionviewcell - 在 iOS14 中调整 UICollectionViewCell 的大小

标签 uicollectionviewcell self ios14 sizing

enter image description here
enter image description here
堆栈:Mac OS 10.15.6,Xcode 版本 12.0 (12A7209)
我有一个自行调整大小的收集单元。我覆盖 preferredLayoutAttributesFitting获得自我调整大小功能。在 iOS 14(“1”)之前,一切都很好。但是,在 iOS 14 中(针对模拟器或实际设备时),此单元格似乎已“损坏”,即现在显示为 (“2”)。此外,布局引擎提示布局约束(“3”)。
你见过类似的问题吗?

最佳答案

我遇到了同样的问题,该单元格在 iOS 11、12、13 上看起来不错,但在 iOS 14 模拟器上不知何故 preferredLayoutAttributesFitting为每个单元格返回相同的高度,忽略某些单元格需要更高的高度。
iOS 14 上的问题代码(适用于 iOS 13 及更低版本):

    override func preferredLayoutAttributesFitting(
        _ layoutAttributes: UICollectionViewLayoutAttributes
    ) -> UICollectionViewLayoutAttributes {
        layoutAttributes.bounds.size.height = systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
        return layoutAttributes
    }
但是有一个 contentView您可以传递给此函数的属性(如果您的单元格是 UICollectionViewCell 的子类,则您已经拥有了)
解决方案(适用于我尝试过的所有 iOS 版本):
    override func preferredLayoutAttributesFitting(
        _ layoutAttributes: UICollectionViewLayoutAttributes
    ) -> UICollectionViewLayoutAttributes {
        layoutAttributes.bounds.size.height = contentView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
        return layoutAttributes
    }
瞧,它又可以工作了。
如果有人能解释这里发生的事情,iOS 14 中发生了什么变化,我将不胜感激...
我并不是说这是所有 iOS 14 自动调整单元格问题的解决方案,但值得一试! :)

关于uicollectionviewcell - 在 iOS14 中调整 UICollectionViewCell 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63996329/

相关文章:

ios - 使用self调用方法会导致错误

enums - 在枚举方法中改变 self

iphone - iOS14 Exchange Online共享邮箱

ios - 如何将 UIView 限制为 UICollectionViewCell

objective-c - IOS7风格模糊UICollectionViewCell的点击 View

ios - 一次加载一个 UICollectionViewCell

swift - 以编程方式执行 segue

Python:如何将某个对象的命名空间导入当前命名空间?

ios - iOS14.2 SwiftUI PageTabView 会多次调用 ChildView onAppear 方法

swift - iOS-14 netServiceBrowser.searchForServices 不工作