2017-07-28 97 views
0

我想畫一個箭頭,這是由如何繪製在一個子視圖

{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'可用之前運行

編輯: 我想知道如何獲取由代碼創建的子視圖的邊界。 我嘗試「邊界」變量,但得到上述錯誤。

+0

爲什麼讓我們猜猜錯誤發生在哪裏?您是否搜索錯誤並找到[this](https://stackoverflow.com/a/40711615/1971013)和其他線索? –

回答

1
arrowPath.center = CGPoint(x:arrowView.frame.size.width/2, y: arrowView.frame.size.height/2) 

arrowView.addSubview(arrowPath) 
+0

謝謝你的幫助。不過,我仍然對你的答案感到困惑。我應該將代碼添加到View類還是View Controller類?我使用bezier路徑函數來繪製子視圖。我想繪製在子視圖的中心,但我不能使用subview的邊界屬性,它給了我上述錯誤。 –

+0

你好,你可以在視圖控制器上使用它。請嘗試並告訴我 –