Я хочу нарисовать стрелку в центре SubView, созданного
{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
Поскольку я хочу нарисовать стрелку в центре подвида, я определяю startPoint и endPoint как
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'
Изменить: я хотел бы знать, как получить границы подпредставления, созданного кодом. Я пробую переменную «bounds», но получаю указанную выше ошибку.