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:

1 http://casperslynge.dk/1

Et voici comment il ressemble dans iOS 5:

2 http://casperslynge.dk/2

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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top