通过向基类添加宽度约束而修复。自从
preferredLayoutAttributesFitting
方法仅用于更新首选宽度。
这个
updateConstraints
在收集滚动期间,不会每次调用方法,这样可以防止约束的变化:
import UIKit
import SnapKit
class AutoSizingCellBase: UICollectionViewCell {
override class var requiresConstraintBasedLayout: Bool {
return true
}
private var widthConstraint: Constraint?
override func updateConstraints() {
if widthConstraint == nil {
if let window = window {
let width = window.bounds.width - 16
contentView.snp.makeConstraints { (make) in
widthConstraint = make.width.equalTo(width).constraint
}
}
}
super.updateConstraints()
}
}
此外,还可以将单元格约束到
superview
自从
更新约束
方法在将视图添加到层次结构后调用。