¿Cómo puedo subclase CALayer para devolver una capa de estilo previo?
-
05-07-2019 - |
Pregunta
¿Cómo subclase CALayer para que devuelva una capa con las propiedades de estilo ya establecidas?
De modo que:
MyCustomLayer *layer = [MyCustomLayer layer];
crearía una capa con estas propiedades;
layer.backgroundColor = sweetBackgroundColor.CGColor;
layer.borderColor = sweetBorderColor.CGColor;
layer.borderWidth = 2.0;
layer.cornerRadius = 8.0;
Para que pueda establecer su marco y agregarlo al árbol.
Pero supongo que mi pregunta realmente podría ser simplemente, ¿cómo subclasificar un objeto para que tenga propiedades ya establecidas en la creación? ¿Posible?
Solución
Simplemente anule -init (el inicializador designado para CALayer) en su subclase, y establezca esas propiedades en su anulación. Cualquier método de creación, incluido -layer, debe terminar enrutando a través del inicializador designado, lo que significa que su configuración adicional se realizará incluso para constructores de conveniencia.