我想创建一个属性包装器,它可以使我的 UICollectionViewLayout
的布局失效。
因此,我创建了这个属性包装器
@propertyWrapper
class LayoutInvalidating {
private let layout: UICollectionViewLayout
init(layout: UICollectionViewLayout) {
self.layout = layout
self.wrappedValue = layout
}
var wrappedValue: UICollectionViewLayout {
didSet {
self.layout.invalidateLayout()
}
}
}
然后,我想按照以下方式使用它。
final class VehicleControlsCollectionViewLayout: UICollectionViewLayout {
@LayoutInvalidating(layout: self) // self is not alive
public var itemSize: CGSize = .init(width: 70, height: 70)
}
每次属性被设置时,我希望调用self.invalidateLayout()
。有什么办法可以在self存在时访问它吗?