使用CAShapeLayer绘制圆的简单方法

时间:2015-02-10 21:49:50

标签: ios objective-c swift uibezierpath cashapelayer

How to draw a smooth circle......Draw Circle......draw filled Circles等问题中,问题和答案非常广泛,包含许多不必要的步骤,所使用的方法并不总是最容易重复 - 创建或管理。

绘制圆圈并将其添加到UIView的简单方法是什么?

2 个答案:

答案 0 :(得分:100)

绘制圆圈的简便方法是创建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会影响其大小和位置。

现在我们有了圈子,我们可以将其作为UIView添加到sublayer

[[self.view layer] addSublayer:circleLayer];

view.layer.addSublayer(circleLayer)

我们的圈子现已显示在UIView

Circle

如果我们希望自定义圈子的颜色属性,我们可以通过设置CAShapeLayer的{​​{1}} - 和stroke颜色轻松完成此操作。

fill

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

Circle_wColors

另外,所有属性都可以在关于主题https://developer.apple.com/.../CAShapeLayer_class/index.html的文档中找到。

答案 1 :(得分: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

相关问题