Come posso sottoclassare CALayer per restituire un livello pre-disegnato?
-
05-07-2019 - |
Domanda
Come si esegue la sottoclasse di CALayer in modo da restituire un livello con proprietà di stile già impostate?
In modo che:
MyCustomLayer *layer = [MyCustomLayer layer];
creerebbe un livello con queste proprietà;
layer.backgroundColor = sweetBackgroundColor.CGColor;
layer.borderColor = sweetBorderColor.CGColor;
layer.borderWidth = 2.0;
layer.cornerRadius = 8.0;
In modo che io possa semplicemente impostare la sua cornice e aggiungerla all'albero.
Ma immagino che la mia domanda potrebbe essere: come sottoclassare un oggetto in modo che abbia proprietà già impostate al momento della creazione. Possibile?
Soluzione
Basta sovrascrivere -init (l'inizializzatore designato per CALayer) nella sottoclasse e impostare quelle proprietà nella sostituzione. Qualsiasi metodo di creazione, incluso -layer, dovrebbe finire il routing attraverso l'inizializzatore designato, il che significa che la tua configurazione aggiuntiva avverrà anche per i costruttori di convenienza.