使用 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 中看到了。

如果我们希望自定义圆圈的颜色属性,我们可以通过设置 CAShapeLayerstroke- 和 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