Как рисовать в центре подвида

Я хочу нарисовать стрелку в центре 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», но получаю указанную выше ошибку.


person Billy    schedule 28.07.2017    source источник
comment
Зачем заставлять нас гадать, где происходит ошибка? Вы искали ошибку и нашли эту и другие подсказки?   -  person meaning-matters    schedule 28.07.2017


Ответы (1)


person    schedule
comment
Спасибо за помощь. Тем не менее, я все еще смущен вашим ответом. Должен ли я добавить ваш код в класс представления или класс контроллера представления? Я использую функцию пути Безье для рисования в подвиде. Я хочу рисовать в центре подвида, но я не могу использовать свойство границ подвида, что дает мне указанную выше ошибку. - person Billy; 29.07.2017
comment
Здравствуйте, вы можете использовать его на контроллере представления. Пожалуйста, попробуйте и скажите мне - person Mohammad Bashir Sidani; 29.07.2017