私はカスタム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
私は、これは我々がエラーメッセージをデコードする場合は、いただきました!間違って把握することができますので、
の可能性のある重複した[エラー:プロパティの初期化子内のインスタンスのメンバを使用することはできません - スウィフト3](https://stackoverflow.com/questions/40710909/error-cannot-use-instance-member-within-property- initializer-swift-3) – Filburt
この問題は、計算されたプロパティ[Example of Computed Property](https://stackoverflow.com/a/39986404/6689101)を使用して修正できます。 – zombie