iTranslated by AI
The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
🐰
CALayer's draw(in:) is not called if frame.size is zero
One way to perform custom drawing using CGContext in CALayer is to override draw(in:). However, this method will not be called at all if the layer's frame.size contains a zero. Before calling draw(in:), make sure both the width and height of the frame.size are 1 or greater.
Basic steps for CALayer drawing using CGContext:
- Create a custom subclass of the layer, override
draw(in:), and implement the desired drawing logic. - Determine the layer's
frame(especially its size) or set it to at least (1, 1). - Call
setNeedsDisplay()on the layer to mark it for a drawing update by the system.
Discussion