Volume NavigationBarStyle lors du passage d'iOS 4 à 5
-
26-10-2019 - |
Question
Un peu de problème de conception après avoir mis à niveau vers iOS 5 et Xcode 4.2
Voici comment mon avis regardé dans iOS 4:
Et voici comment il ressemble dans iOS 5:
Dans mon délégué de navigation, j'ai la méthode suivante pour dessiner la « image » en haut:
- (void)drawRect:(CGRect)rect {
UIImage *image;
if(self.barStyle == UIBarStyleDefault){
image = [UIImage imageNamed: @"topbar_base.png"];
}
else{
image = [UIImage imageNamed: @"nyhedsbar_base.png"];
}
[image drawInRect:CGRectMake(-1, -1, self.frame.size.width+3, self.frame.size.height+3)];
}
Et dans mon contrôleur I définissez les éléments suivants:
self.navigationBarStyle = UIBarStyleBlack;
Comment se fait-il ne fonctionne pas dans iOS 5?
Merci
La solution
Sous iOS5, vous devez utiliser UIAppearance
. Jetez un coup d'oeil. Voici un exemple pour l'utiliser sous condition afin que vous puissiez continuer à soutenir iOS4:
// iOS5-only to customize the nav bar appearance
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) {
UIImage *img = [UIImage imageNamed: @"NavBarBackground.png"];
[[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];
}
Comme vous pouvez le voir, cette règle une image d'arrière-plan personnalisé pour tous UINavigationBars . Il y a beaucoup de choses que vous pouvez faire avec UIAppearance. Vous voulez garder toute substance personnalisée que vous faites actuellement drawRect:
puisque les dispositifs de pré-iOS4 utiliseront toujours que et non le nouveau code UIAppearance.