Il protocollo UIAppearance introdotto con iOS 5 si usa per personalizzare l’aspetto di istanze di una classe inviando messaggi di modifica. Ci sono due modi per personalizzare l’aspetto degli oggetti: per tutte le istanze, e per le istanze contenute all’interno di un’istanza di una classe contenitore. Se vedete la documentazione Apple ci sono solo due metodi di classe :
- + (id)appearance
- + (id)appearanceWhenContainedIn:(Class <UIAppearanceContainer>)ContainerClass
Per vedere le sue potenzialità creiamo un progetto semplice View-Based-Application e nello storyboard inseriamo degli oggetti : UIToolBar (mettiamolo in basso), UISwitch, UISlider, UISegmentControl. Inseriamo anche un UINavigationController come rootViewController. Adesso per modificare l’aspetto di tutti gli oggetti andiamo nel AppDelegate.m ne metodo
[code lang=”obj-c”]-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions[/code]
e inseriamo questi metodi:
[code lang=”obj-c”]
[[UINavigationBar appearance] setTintColor:[UIColor yellowColor]];
[[UIToolbar appearance] setTintColor:[UIColor redColor]];
[[UIBarButtonItem appearance] setTintColor:[UIColor grayColor]];
[[UISlider appearance] setMaximumTrackTintColor:[UIColor blueColor]];
[[UISlider appearance] setMinimumTrackTintColor:[UIColor redColor]];
[[UISwitch appearance] setOnTintColor:[UIColor greenColor]];
[[UISegmentedControl appearance] setTintColor:[UIColor blackColor]];
[/code]
Come vedete abbiamo modificato i colori degli oggetti, per vedere basta testare l’app.
Praticamente adesso in tutte le viste che inserite questi tipi di oggetti verrano modificato allo stesso modo.