Shadows, Borders, and More
A CALayer has many additional properties that affect details of how it is drawn. Once again, all of these drawing details can, of course, be applied equally to a UIView; changing these properties of the UIView’s underlying layer changes how the view is drawn. Thus, these are effectively view features as well.
A layer can have a shadow, defined by its shadowColor
, shadowOpacity
, shadowRadius
, and shadowOffset
properties. To make the layer draw a shadow, set the shadowOpacity
to a nonzero value. The shadow is normally based on the shape of the layer’s nontransparent region, but deriving this shape can be calculation-intensive (so much so that in early versions of iOS, layer shadows weren’t implemented). You can vastly improve performance by defining the shape yourself and assigning this shape as a CGPath to the shadowPath
property.
A layer can have a border (borderWidth
, borderColor
); the borderWidth
is drawn inward from the bounds, potentially covering some of the content unless you compensate.
A layer can be bounded by a rounded rectangle, by giving it a cornerRadius
greater than zero. If the layer has a backgroundColor
, that background is clipped to the shape of the rounded rectangle. If the layer has a border, the border has rounded corners too.
Like a UIView, a CALayer has a master opacity
property, and it has a hidden
property that can be set to take it out of the visible interface without actually removing it from its superlayer.
Like a UIView, a CALayer ...
Get Programming iOS 4 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.