Comment puis-je sous-classer CALayer pour retourner un calque pré-stylé?
-
05-07-2019 - |
Question
Comment sous-classez-vous CALayer afin de renvoyer un calque avec des propriétés de style déjà définies?
Pour que:
MyCustomLayer *layer = [MyCustomLayer layer];
créerait un calque avec ces propriétés;
layer.backgroundColor = sweetBackgroundColor.CGColor;
layer.borderColor = sweetBorderColor.CGColor;
layer.borderWidth = 2.0;
layer.cornerRadius = 8.0;
Pour que je puisse simplement définir son cadre et l'ajouter à l'arbre.
Mais je suppose que ma question pourrait vraiment être simplement: comment sous-classer un objet de sorte qu'il ait des propriétés déjà définies lors de la création. Possible?
La solution
Remplacez simplement -init (l'initialiseur désigné pour CALayer) dans votre sous-classe et définissez ces propriétés dans votre remplacement. Toute méthode de création, y compris -layer, doit aboutir au routage via l'initialiseur désigné, ce qui signifie que votre configuration supplémentaire se produira même pour les constructeurs de services pratiques.