使用CAShapeLayer绘制圆形的简单方法

36
2个回答

132

绘制圆形的简单方法是创建一个 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 中看到圆形。

Circle

如果我们想要自定义圆形的颜色属性,我们可以通过设置 CAShapeLayerstrokefill 颜色轻松实现。

[circleLayer setStrokeColor:[[UIColor redColor] CGColor]];
[circleLayer setFillColor:[[UIColor clearColor] CGColor]];

shapeLayer.strokeColor = UIColor.red.cgColor;
shapeLayer.fillColor = UIColor.clear.cgColor;

Circle_wColors

此外,更多相关属性可以在的文档中找到:https://developer.apple.com/.../CAShapeLayer_class/index.html.


2
如何增加上面的红色边框/描边的大小? - Rohan Sanap
@RohanSanap,您可以通过编辑图层的lineWidth属性来实现。 - sbru

0
使用CAShapeLayer类可以轻松绘图... 1.创建CAShapeLayer对象 2.创建圆形路径 3.将路径设置为所需的CAShapeLayer路径 4.将该层添加到您的视图中
  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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接