【发布时间】:2020-06-18 22:23:20
【问题描述】:
我正在尝试创建波纹管属性包装器
@propertyWrapper
public struct ConstraintValue {
private let view:UIView
private let contraint:NSLayoutConstraint
public init(contraint:NSLayoutConstraint,view:UIView) {
self.contraint = contraint
self.view = view
}
public var wrappedValue: CGFloat {
set {
contraint.constant = newValue
view.layoutIfNeeded()
}
get {
return contraint.constant
}
}
}
但是当我尝试使用它时,我得到“不能在属性初始化器中使用实例成员;属性初始化器在 'self' 可用之前运行”
@IBOutlet weak private var imageViewHeightConstraint: NSLayoutConstraint!
@ConstraintValue(contraint: imageViewHeightConstraint, view: self)
public var imageHeight:CGFloat
有没有办法解决这个错误?
【问题讨论】:
-
你能展示更多声明
imageHeight的类吗?具体来说,imageViewHeightConstraint是如何初始化的? -
@IBOutlet 弱私有变量 imageViewHeightConstraint:NSLayoutConstraint!它是一个 IBOutlet
-
制作属性
lazy -
哪个属性?
标签: ios swift property-wrapper