NEW: Master Swift design patterns with my latest book! >>

How to draw shapes using CAShapeLayer

Written by Paul Hudson    @twostraws

There are lots of CALayer subclasses out there, but CAShapeLayer is one of my favorites: it provides hardware-accelerated drawing of all sorts of 2D shapes, and includes extra functionality such as fill and stroke colors, line caps, patterns and more.

To get you started, this uses UIBezierPath to create a rounded rectangle, which is then colored red using CAShaperLayer. Remember, CALayer sits underneath UIKit, so you need to use CGColor rather than UIColor.

let layer = CAShapeLayer()
layer.path = UIBezierPath(roundedRect: CGRect(x: 64, y: 64, width: 160, height: 160), cornerRadius: 50).cgPath
layer.fillColor = UIColor.red.cgColor
view.layer.addSublayer(layer)

Available from iOS 3.0

Did this solution work for you? Please pass it on!

Other people are reading…

About the Swift Knowledge Base

This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.

Get my latest video for free

Learn about value types, functional programming, and protocol-oriented programming in this new video – it's free!

Click here to visit the Hacking with Swift store >>