4
我写了一个自定义UIView
,我发现了一个奇怪的问题。我认为这是关系到一个非常基本的概念,但我只是不明白,感叹.....不能在属性初始值设定项内使用实例成员
class ArrowView: UIView {
override func draw(_ rect: CGRect) {
let arrowPath = UIBezierPath.bezierPathWithArrowFromPoint(startPoint: CGPoint(x:bounds.size.width/2,y:bounds.size.height/3), endPoint: CGPoint(x:bounds.size.width/2, y:bounds.size.height/3*2), tailWidth: 8, headWidth: 24, headLength: 18)
let fillColor = UIColor(red: 0.00, green: 0.59, blue: 1.0, alpha: 1.0)
fillColor.setFill()
arrowPath.fill()
}
}
此代码工作正常,但如果我抓住这条线了覆盖绘制函数它不编译。错误说我不能使用边界属性。
let arrowPath = UIBezierPath.bezierPathWithArrowFromPoint(startPoint: CGPoint(x:bounds.size.width/2,y:bounds.size.height/3), endPoint: CGPoint(x:bounds.size.width/2, y:bounds.size.height/3*2), tailWidth: 8, headWidth: 24, headLength: 18)
Cannot use instance member 'bounds' within property initializer; property initializers run before 'self' is available
我不不明白,为什么我不能用这个界定出FUNC的画
的可能的复制[错误:不能使用实例成员属性初始化中 - 斯威夫特3](https://stackoverflow.com/questions/40710909/error-cannot-use-instance-member-within-property- initializer-swift-3) – Filburt
您可以使用计算属性[计算属性示例](https://stackoverflow.com/a/39986404/6689101)来解决此问题。 – zombie