相关疑难解决方法(0)

自调整大小的集合视图在 iOS 15 中进入递归循环

我有一个自动调整大小的集合视图,当我调用 super.layoutSubviews 时,我的应用程序崩溃,因为集合视图进入递归更新循环。这在 iOS 14 及更低版本中运行良好。但从 iOS 15 开始就观察到了这一点。

class DynamicCollectionView: UICollectionView {

override var contentSize: CGSize {
    didSet {
        invalidateIntrinsicContentSize()
    }
}

override func layoutSubviews() {
    super.layoutSubviews()
    if bounds.size != intrinsicContentSize {
        invalidateIntrinsicContentSize()
    }
}

override var intrinsicContentSize: CGSize {
    return contentSize
}

override func reloadData() {
    super.reloadData()
    invalidateIntrinsicContentSize()
    layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)

}

崩溃 说:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“UICollectionView(<KPFlagship.SelfSizingCollectionView 0x7f896b260e00>)卡在其更新/布局循环中。发生这种情况的原因有很多,包括自调整大小的视图,其首选属性未返回一致的大小。要调试此问题,请检查控制台应用程序中“UICollectionViewRecursion”类别中的日志。

uikit ios swift5 ios15

11
推荐指数
2
解决办法
6623
查看次数

适用于 iOS 15 的 Xcode 13 在控制台 UICollectionViewRecursion 上收到警告] cv == 0x7fc7f418e000 禁用递归触发日志记录

我正在为 UICollectionView 使用 CompositionalLayout。iOS 15 之前工作正常,没有任何警告。但在 Xcode 13 和 iOS 15 中,滚动 UICollectionView 时低于警告

[UICollectionViewRecursion] cv == 0x7fc7f418e000 Disabling recursion trigger logging
Run Code Online (Sandbox Code Playgroud)

我使用不同类型的自定义单元格和使用自定义视图的自定义单元格。

这是我的单元 UICollectionView ->CustomUICollectionviewCell->CustomUIView(通过 nib 加载)的配置

如何解决这个问题?

提前致谢。

iphone ipad ios uicollectionview swift

6
推荐指数
1
解决办法
2500
查看次数

标签 统计

ios ×2

ios15 ×1

ipad ×1

iphone ×1

swift ×1

swift5 ×1

uicollectionview ×1

uikit ×1