该应用程序在 Xcode 12 和 iOS 14 之前工作正常,但一旦我升级到 Xcode 13 / iOS 15,我的应用程序就停止工作,并显示以下错误日志
2021-11-26 12:49:38.844428+0530 Mitaja[6170:102791] [UICollectionViewRecursion] cv == 0x7feb458e0000 Enabling recursion trigger logging
2021-11-26 12:49:39.040798+0530 Mitaja[6170:102791] [UICollectionViewRecursion] UICollectionView 0x7feb458e0000 Visible cells update scheduled with call stack:
(
0 UIKitCore 0x00007fff24644a06 -[UICollectionView _setNeedsVisibleCellsUpdate:withLayoutAttributes:] + 107
1 UIKitCore 0x00007fff24675708 -[UICollectionView _invalidateLayoutWithContext:] + 1310
2 UIKitCore 0x00007fff246a660c -[UICollectionViewLayout invalidateLayoutWithContext:] + 200
3 UIKitCore 0x00007fff2469a329 -[UICollectionViewFlowLayout invalidateLayoutWithContext:] + 667
4 UIKitCore 0x00007fff246a3b5f -[UICollectionViewFlowLayout _didPerformUpdateVisibleCellsPassWithLayoutOffset:] + 430
5 UIKitCore 0x00007fff24653a33 -[UICollectionView _updateVisibleCellsNow:] + 10438
6 …Run Code Online (Sandbox Code Playgroud) 我有一个UICollectionViewCell子类,该子类使用原型单元和约束进行设置(每个视图都垂直和水平连接)。
我有两个大小不一的标签,它们可以是一行或两行。为此,我在每个标签上设置了两个高度限制,其中一个高度大于或等于(取决于标签为16或20)而小于或等于(取决于标签为32或40)。
标签上的行数设置为0。(尽管我尝试了各种设置)。
由于我使用了自动布局和约束来设置视图,因此我在单元格的awakeFromNib()中的内容视图上指定了宽度
override func awakeFromNib() {
NSLayoutConstraint.activate([contentView.widthAnchor.constraint(equalToConstant: 341)])
super.awakeFromNib()
configureBorder()
}
Run Code Online (Sandbox Code Playgroud)
在collectionView的布局上,我已经为EstimateItemSize和itemSize指定了automaticDimension常量。
if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
flowLayout.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
flowLayout.itemSize = UICollectionViewFlowLayoutAutomaticSize
}
Run Code Online (Sandbox Code Playgroud)
关于使用自动布局的想法,我尚未在集合视图上实现委托。
我遇到了非常不一致的布局,在某些情况下该单元格会按照我的意愿出现,在另一些情况下,标签被截断了,在另一些情况下,标签却非常狭窄,并在三行上显示了文本。
我尝试了很多事情,包括
.sizeToFit()
在设置了标签的text属性之后调用
每个标签,以及
.setNeedsDisplay()
在单元格从其返回之前调用
cellForItemAt
我想知道使用情节提要约束执行此操作的正确方法是什么。在SO上,我已经针对类似问题解答了一些流行的答案,尽管并没有取得任何真正的成功。