我想畫一個箭頭,這是由如何繪製在一個子視圖
{let arrowView = ArrowView()
arrowView.frame = CGRect(x: selectButton.frame.minX, y: selectButton.frame.maxY, width: selectButton.frame.width, height: processButton.frame.minY - selectButton.frame.maxY)
arrowView.backgroundColor = UIColor.white
arrowView.viewWithTag(100)
view.addSubview(arrowView)
} //these codes are in the view controller
創建一個子視圖的中心繪製在我使用
let arrowPath = UIBezierPath.bezierPathWithArrowFromPoint(startPoint: startPoint, endPoint: endPoint, tailWidth: 4, headWidth: 8, headLength: 6)
// the error occurs here
override func draw(_ rect: CGRect) {
let fillColor = UIColor.white
fillColor.setFill()
arrowPath.lineWidth = 1.0
let strokeColor = UIColor.blue
strokeColor.setStroke()
arrowPath.stroke()
arrowPath.fill()
//these codes are in the subclass of UIView
子視圖的箭頭中心
因爲我想在子視圖的中心繪製的箭頭, 我定義:起點和終點爲
private var startPoint: CGPoint {
return CGPoint(x: bounds.midX, y: bounds.minY)
}
private var endPoint: CGPoint {
return CGPoint(x: bounds.midX, y: bounds.maxY)
}
//try to find the point at the centre of Subview
但是,此代碼不編譯,錯誤說:
無法在屬性初始值設定項內使用實例成員'startPoint';屬性初始值設定項在'self'可用之前運行
編輯: 我想知道如何獲取由代碼創建的子視圖的邊界。 我嘗試「邊界」變量,但得到上述錯誤。
爲什麼讓我們猜猜錯誤發生在哪裏?您是否搜索錯誤並找到[this](https://stackoverflow.com/a/40711615/1971013)和其他線索? –