CALayer allows you to control quite a bit about its appearance through its properties. But what if that were not enough: What if you wanted to do custom drawing in a CALayer? The CALayerDelegate method drawLayer(_:inContext:) allows you to do just that with Core Graphics/Quartz.
However, much of the time, you will simply want to control a few common things:
the background color
whether the corners are rounded and, if so, how much
an image filter to run the contents of the layer through
In these cases and others like it, you can simply modify the layer’s properties.
Subclasses of CALayer also make particular kinds of drawing easier:
As you already saw, drawing text on a layer is easier ...