Frage

Haben Sie ein kleines Designproblem, nachdem Sie auf iOS 5 und Xcode 4.2 aktualisiert wurden

So sah meine Ansicht in iOS 4 aus:

1 http://casperslynge.dk/1

Und so sieht es in iOS 5 aus:

2 http://casperslynge.dk/2

In meinem Navigationsdelegierten habe ich die folgende Methode, um das "Bild" oben zu zeichnen:

- (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)];
}

Und in meinem Controller stelle ich Folgendes fest:

self.navigationBarStyle = UIBarStyleBlack;

Wie kommt es, dass es in iOS 5 nicht funktioniert?

Vielen Dank

War es hilfreich?

Lösung

Unter iOS5 müssen Sie verwenden UIAppearance. Schauen Sie sich das an. Hier ist ein Beispiel, um es bedingt zu verwenden, damit Sie iOS4 weiterhin unterstützen können:

// 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];
}

Wie Sie sehen können, setzt dies ein benutzerdefiniertes Hintergrundbild für alle UinavigationBars. Es gibt viele Dinge, die Sie mit Uippearance machen können. Sie möchten alle benutzerdefinierten Dinge behalten, in denen Sie gerade machen drawRect: Da Pre-IOS4-Geräte dies immer noch verwenden und nicht den neuen UIIPPARANCE-Code.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top