2012-04-08 6 views

Antwort

3

nevan king ist richtig aber können Sie einfach das Hintergrundbild der Navigationsleiste ändern oder auf Null setzen. Wenn Sie es auf Null setzen oder ein transparentes BG-Bild bereitstellen, erzielen Sie den gewünschten Effekt.

Für iOS> = 5.0 Sie einfach das Aussehen einstellen könnte:

if([navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) // needed if iOS older than 5.0 is also supported 
    [navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 

Sie tun können, wo immer Sie einen Zeiger auf Ihre Navigationsleiste haben. Z.B. innerhalb der viewDidLoad Methode Ihrer ViewController.

Für ältere iOS-Version benötigen Sie eine Abhilfe, indem eine Kategorie von UINavigationBar und überschreiben die drawRect Methode:

@implementation UINavigationBar (BackgroundImage) 
- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed: @""]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
@end 

Beide Methoden kompatibel sind, wenn Sie alle iOS-Versionen unterstützen wollen.
Daher sollten Sie beachten, dass die Zurück-Taste das gleiche Hintergrundbild verwendet. Sie müssen also einen benutzerdefinierten erstellen.

UIImage *bgImageNormal = [UIImage imageNamed:@"backButtonImage.png"]; 

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setBackgroundImage: bgImageNormal forState:UIControlStateNormal]; 

button.frame= CGRectMake(0.0, 0.0, bgImageNormal.size.width, bgImageNormal.size.height); 
[button addTarget:self action:@selector(navigationBarBackButtonTouchUpInside:) forControlEvents:UIControlEventTouchUpInside]; // your action method here 

UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 
self.navigationItem.leftBarButtonItem = closeButton; 
[closeButton release]; 

Dieser Code muss für jeden ViewController, den Sie in Ihre Navigationsleiste schieben, implementiert werden. Ein guter Platz dafür ist auch innerhalb der viewDidLoad Methode.

+0

Das ist meine Lösung, die erste ... wo steckt der Code? im Blick hat geladen? – Acunamatata

+0

Ich habe die Antwort mit empfohlenen Orten für den Code aktualisiert. Die iOS 5-Methode und die benutzerdefinierte Zurück-Schaltfläche können überall dort sein, wo Sie Zugriff auf die navBar oder den viewController haben, den Sie dorthin schieben. Der vorläufige iOS 5-Workaround muss in einer eigenen Kategorie von UINavigationBar implementiert werden. – yinkou

0

Der Zurück-Button wird von der Navigationsleiste erstellt und ist immer ein Teil davon. Es ist also nicht möglich. Sie können die Navigationsleiste ausblenden und erneut anzeigen, wenn Ihr Benutzer den Bildschirm berührt (dies ist die Funktion der Fotos App, wenn Sie ein einzelnes Foto ansehen) oder eine Schaltfläche erstellen und dauerhaft oben links auf dem Bildschirm anzeigen. Sie können die Navigationsleiste auch teilweise transparent machen, so dass der darunter liegende Inhalt angezeigt wird.

+0

Ich möchte den Wurf Schatten unter Navigationsleiste löschen ... es ist möglich – Acunamatata

+0

Welcher Schatten? Ich bekomme keine .. –

+0

Wenn Sie iOS 5 verwenden, können Sie das Aussehen der Navigationsleiste anpassen. Sehen Sie sich das WWDC Session 114 Video oder das "Custom Appearance for UIKit Controls" im iOS 5 Dokument an: https://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iOS5.html#//Apple_ref/doc/uid/TP30915195-SW1 –

Verwandte Themen