Vous devez utiliser le "apparence" proxy pour changer l'arrière-plan et d'autres propriétés de style de contrôles tels que UINavigationBar
, UIToolBar
etc. dans iOS 5.xx. Cependant, ce ne sont pas disponible pour iOS 4.xx donc pour la compatibilité ascendante, vous avez besoin d'une solution hybride.
Si vous souhaitez soutenir à la fois l'iOS 4.xx et iOS 5.xx des périphériques (par exemple DeploymentTarget
4.xx), vous devez être prudent dans l'emballage de l'appel à l'apparition de procuration par la vérification à l'exécution si le "apparence" sélecteur est présent ou pas.
Vous pouvez le faire par:
//Customize the look of the UINavBar for iOS5 devices
if ([[UINavigationBar class]respondsToSelector:@selector(appearance)]) {
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"NavigationBar.png"] forBarMetrics:UIBarMetricsDefault];
}
Vous devez également quitter l'iOS 4.xx solution de contournement que vous avez mis en œuvre. Si vous avez implémenté l' drawRect
solution de contournement pour iOS 4.xx périphériques, comme l'a dit @ludwigschubert, vous devez laisser que:
@implementation UINavigationBar (BackgroundImage)
//This overridden implementation will patch up the NavBar with a custom Image instead of the title
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed: @"NavigationBar.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
Cette obtiendrez de l' NavBar
le même aspect dans les deux iOS 4 et iOS 5 appareils.