在iOS14中自定义UICollectionViewCell

问题描述

JMeter PerfMon Plugin

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自定义单元问题的解决方案,但值得一试! :)