2016-01-26 38 views
-2

我有一個UIBezierPath弧:爲什麼cornerRadius不實現UIBezierPath弧?

drawLayer.path = UIBezierPath(arcCenter: <CGPoint>, radius: <CGFloat>, startAngle: <CGFloat>, endAngle: <CGFloat>, clockwise: <Bool>) 

後來我試圖cornerRadius設置爲它:

drawLayer.cornerRadius = 10 

它有這樣的方法,但爲什麼它沒有實現它???

我甚至設置

drawLayer.masksToBounds = true 

它並沒有幫助:它並沒有改變路徑的半徑。

+3

什麼是你想完成通過設置拐角半徑?如果你已經有一個弧,並且你正在嘗試改變弧的半徑,只需重新設置路徑。拐角半徑用於改變矩形層角的半徑,從而形成一個圓角矩形。如果你真的想將你的圓弧剪裁成圓角矩形,只需將你的'CAShapeLayer'添加爲一個普通矩形圖層的子圖層,該矩形圖層可以剪裁到具有圓角半徑的邊界。以下是一個示例:http://stackoverflow.com/questions/22356821/how-to-create-round-corners-with-cashapelayer –

+2

您正在將角半徑應用於圖層,而不是路徑。 – Crazyrems

+0

你有沒有想要完成的事情?我們可能會提供一些不同的UIBezierPath方法來獲得最終外觀。 –

回答

1

不匹配

drawLayer.pathdrawLayer.cornerRadius是2層不同的結構。

cornerRadiusCALayer本身的屬性(使其邊緣變圓,如在roundedRect中)。

什麼您正試圖改變的是它的創作,經過的路徑,你不能做半徑:

drawLayer.path.radius // does not exist 

UIBezierPath(arcCenter...)是一個方便的方法,它創建與控制點的路徑,而不是實際的arc對象。

解決方案

如果你想有一個不同的弧線,創造一個新的,使用newR爲您更新半徑然後根據需要更改路徑,:

drawLayer.path = UIBezierPath(arcCenter: aPt, 
           radius: newR, 
          startAngle: alpha, 
           endAngle: omega, 
           clockwise: b) 
相關問題