An easy way to draw a circle using CAShapeLayer
Asked Answered
F

2

36

In questions like How to draw a smooth circle..., ...Draw Circle... and ...draw filled Circles the question and answer is very broad, contains lots of unnecessary steps and the methods used isn't always the easiest to re-create or manage.

What is an easy way to draw a circle and add it to my UIView?

Furfural answered 10/2, 2015 at 21:49 Comment(0)
F
132

An easy way to draw a circle is to create a CAShapeLayer and add a 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;

After creating the CAShapeLayer we set its path to be a UIBezierPath.

Our UIBezierPath then draws a bezierPathWithOvalInRect. The CGRect we set will effect its size and position.

Now that we have our circle, we can add it to our UIView as a sublayer.

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

view.layer.addSublayer(circleLayer)

Our circle is now visible in our UIView.

Circle

If we wish to customise our circle's color properties we can easily do so by setting the CAShapeLayer's stroke- and fill color.

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

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

Circle_wColors

Additionall properties can be found over at 's documentation on the subject https://developer.apple.com/.../CAShapeLayer_class/index.html.

Furfural answered 10/2, 2015 at 21:49 Comment(2)
How can I increase the size of the above red border/stroke?Marou
@RohanSanap you can do so by editing the lineWidth property of the layerBlida
H
0

Using CAShapeLayer Class makes drawing easy... 1.Create CAShapeLayer Object 2.Create a Circular path 3.Set the path to the wanted CAShapeLayer path 4.Add the layer to your view

  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)

Note That ,here I draw the circle from center of the view. You can also set the fill color for your circle like bellow:

  shapeLayer.fillColor = UIColor.red.cgColor

for further study you can check on CALayer.com

Hipolitohipp answered 10/5, 2020 at 10:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.