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