Ho un oggetto personalizzato che eredita da NSObject. Questo oggetto fa "alcune cose", una delle quali sta creando un UIView con alcuni oggetti UIKit (UILabel, UIButtons ecc ecc ...). Questo oggetto ha alcune proprietà come: textColor, font, backgroundColor ... che vengono utilizzate per personalizzare l'aspetto degli oggetti UIKit contenuti.Proxy UIA per gli oggetti personalizzati
Desidero personalizzare queste proprietà "one shot" per tutte le istanze create di questo oggetto e ho esaminato il protocollo UIAppearance.
Gli oggetti UIKit standard sono già conformi al protocollo UIAppearance, ma non voglio applicare lo stile su TUTTI UILabels o UIButtons. Voglio applicare gli stili solo agli UILabels e agli UIButtons contenuti nelle istanze dell'oggetto. Inoltre, non posso (e non voglio) usare apparenzaWhenContainedIn: perché lo sviluppatore che utilizza il mio oggetto personalizzato potrebbe non sapere che tipo di oggetti sono "contenuti" al suo interno.
Quindi, stavo cercando come rendere il mio oggetto personalizzato conforme al protocollo UIAppearance.
AFAIK deve implementare il metodo
+ (id)appearance
. Questo metodo dovrebbe restituire un oggetto proxy in cui è possibile inviare tutte le personalizzazioni. Ma, guardando il metodo di aspetto degli oggetti UIKit, vedo che viene restituito un oggetto privato. Un oggetto di classe _UIAppearance.
Quindi, sembra che Apple non mi dia un oggetto proxy standard per la personalizzazione del mio, e devo creare se da zero. È giusto o sto perdendo qualcosa?
Grazie
Funziona bene L'ho esteso in modo che possa anche risalire la gerarchia delle classi in modo che possa anche impostare le opzioni della classe genitore: https://gist.github.com/vkodocha/5500276 (il codice è troppo lungo per aggiungere inline). – Chris
bel lavoro! Come miglioramento, potresti usare 'instancetype' invece di' id' come tipo di ritorno, in modo da poter saltare il cast esplicito a 'FLAppearance'. –
@GabrielePetronella grazie per il suggerimento ;-) – LombaX