使用 CAShapeLayer 绘制圆的简单方法
An easy way to draw a circle using CAShapeLayer
在像 How to draw a smooth circle..., ...Draw Circle... and ...draw filled Circles 这样的问题中,问题和答案非常广泛,包含许多不必要的步骤,并且所使用的方法并不总是最容易重新创建或管理的。
画圆并将其添加到我的 UIView
的简单方法是什么?
绘制圆的简单方法是创建一个 CAShapeLayer
并添加一个 UIBezierPath
。
CAShapeLayer *circleLayer = [CAShapeLayer layer];
[circleLayer setPath:[[UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 50, 100, 100)] CGPath]];
let circleLayer = CAShapeLayer();
circleLayer.path = UIBezierPath(ovalIn: CGRect(x: 50, y: 50, width: 100, height: 100)).cgPath;
创建 CAShapeLayer
后,我们将其 path
设置为 UIBezierPath
。
我们的UIBezierPath
再画一个bezierPathWithOvalInRect
。我们设置的CGRect
会影响它的大小和位置。
现在我们有了我们的圈子,我们可以将它作为 sublayer
添加到我们的 UIView
。
[[self.view layer] addSublayer:circleLayer];
view.layer.addSublayer(circleLayer)
我们的圈子现在可以在 UIView
中看到了。
如果我们希望自定义圆圈的颜色属性,我们可以通过设置 CAShapeLayer
的 stroke
- 和 fill
颜色轻松实现。
[circleLayer setStrokeColor:[[UIColor redColor] CGColor]];
[circleLayer setFillColor:[[UIColor clearColor] CGColor]];
shapeLayer.strokeColor = UIColor.red.cgColor;
shapeLayer.fillColor = UIColor.clear.cgColor;
可以在 关于该主题的文档中找到所有其他属性 https://developer.apple.com/.../CAShapeLayer_class/index.html。
使用 CAShapeLayer Class 让绘图变得简单...
1.Create CAShapeLayer 对象
2.Create 一个循环路径
3.Set 想要的 CAShapeLayer 路径
4.Add您视图中的图层
let shapeLayer = CAShapeLayer()
let center = view.center
let circulPath = UIBezierPath(arcCenter: center, radius: 100, startAngle: 0, endAngle: 2.0 * CGFloat.pi, clockwise: true)
shapeLayer.path = circulPath.cgPath
view.layer.addSublayer(shapeLayer)
请注意,这里我从视图中心绘制圆圈。
您还可以像下面这样为您的圆圈设置填充颜色:
shapeLayer.fillColor = UIColor.red.cgColor
如需进一步研究,您可以查看
CALayer.com
在像 How to draw a smooth circle..., ...Draw Circle... and ...draw filled Circles 这样的问题中,问题和答案非常广泛,包含许多不必要的步骤,并且所使用的方法并不总是最容易重新创建或管理的。
画圆并将其添加到我的 UIView
的简单方法是什么?
绘制圆的简单方法是创建一个 CAShapeLayer
并添加一个 UIBezierPath
。
CAShapeLayer *circleLayer = [CAShapeLayer layer];
[circleLayer setPath:[[UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 50, 100, 100)] CGPath]];
let circleLayer = CAShapeLayer();
circleLayer.path = UIBezierPath(ovalIn: CGRect(x: 50, y: 50, width: 100, height: 100)).cgPath;
创建 CAShapeLayer
后,我们将其 path
设置为 UIBezierPath
。
我们的UIBezierPath
再画一个bezierPathWithOvalInRect
。我们设置的CGRect
会影响它的大小和位置。
现在我们有了我们的圈子,我们可以将它作为 sublayer
添加到我们的 UIView
。
[[self.view layer] addSublayer:circleLayer];
view.layer.addSublayer(circleLayer)
我们的圈子现在可以在 UIView
中看到了。
如果我们希望自定义圆圈的颜色属性,我们可以通过设置 CAShapeLayer
的 stroke
- 和 fill
颜色轻松实现。
[circleLayer setStrokeColor:[[UIColor redColor] CGColor]];
[circleLayer setFillColor:[[UIColor clearColor] CGColor]];
shapeLayer.strokeColor = UIColor.red.cgColor;
shapeLayer.fillColor = UIColor.clear.cgColor;
可以在 关于该主题的文档中找到所有其他属性 https://developer.apple.com/.../CAShapeLayer_class/index.html。
使用 CAShapeLayer Class 让绘图变得简单... 1.Create CAShapeLayer 对象 2.Create 一个循环路径 3.Set 想要的 CAShapeLayer 路径 4.Add您视图中的图层
let shapeLayer = CAShapeLayer()
let center = view.center
let circulPath = UIBezierPath(arcCenter: center, radius: 100, startAngle: 0, endAngle: 2.0 * CGFloat.pi, clockwise: true)
shapeLayer.path = circulPath.cgPath
view.layer.addSublayer(shapeLayer)
请注意,这里我从视图中心绘制圆圈。 您还可以像下面这样为您的圆圈设置填充颜色:
shapeLayer.fillColor = UIColor.red.cgColor
如需进一步研究,您可以查看 CALayer.com