Swift version: 5.6
iOS makes it easy to draw shapes using
CAShapeLayer, but you also get the ability to adjust how shapes are drawn. By manipulating the
strokeEnd properties you can make shapes draw themselves on the screen: you can present a half-drawn star, or a three-quarters drawn circle, for example.
However, as clever as that is what’s really neat is being able to animate the drawing process. To try it out, first create a
CAShapeLayer with a stroke that’s visible, like this one:
let layer = CAShapeLayer() let bounds = CGRect(x: 50, y: 50, width: 250, height: 250) layer.path = UIBezierPath(roundedRect: bounds, byRoundingCorners: .allCorners, cornerRadii: CGSize(width: 20, height: 20)).cgPath layer.strokeColor = UIColor.black.cgColor layer.fillColor = nil layer.lineDashPattern = [8, 6] view.layer.addSublayer(layer)
Now create and add a
CABasicAnimation to adjust the
let animation = CABasicAnimation(keyPath: "strokeEnd") animation.fromValue = 0 animation.toValue = 1 animation.duration = 2 animation.autoreverses = true animation.repeatCount = .infinity layer.add(animation, forKey: "line")
I made that animate from 0 (not drawn) to 1 (fully drawn) over two seconds, but also made it reverse at the end and repeat infinite times.
SPONSORED Play is the first native iOS design tool created for designers and engineers. You can install Play for iOS and iPad today and sign up to check out the Beta of our macOS app with SwiftUI code export. We're also hiring engineers!
Available from iOS 3.2
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.