views:

356

answers:

1

How do you subclass CALayer so that you return a layer with styling properties already set?

So that:

MyCustomLayer *layer = [MyCustomLayer layer];

would create a layer with these properties;

layer.backgroundColor = sweetBackgroundColor.CGColor;
layer.borderColor = sweetBorderColor.CGColor;

layer.borderWidth = 2.0;
layer.cornerRadius = 8.0;

So that I can just set its frame and add it to the tree.

But I guess my question really could just be, how do you subclass an object so that it has properties already set at creation. Possible?

+1  A: 

Just override -init (the designated initializer for CALayer) in your subclass, and set those properties in your override. Any creation method, including -layer, should end up routing through the designated initializer, meaning your extra setup will happen even for convenience constructors.

smorgan
@smorgan Thanks. I think I was missing a basic part of objecitve-c/cocoa.
Joe Ricioppo