2016-01-26 39 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) 
相关问题