Benutzerdefinierte hintergrund für die UINavigationBar im landscape-Modus
Ich bin das hinzufügen einen benutzerdefinierten hintergrund für meine UINavigationBar. Es funktioniert gut, solange das Telefon im portrait-Modus. Sobald ich auf landscape-Modus, die Hälfte der bar wird blau angezeigt (die Standard-navbar Farbe) und die Hälfte davon hat mein Bild
Wie kann ich das Bild dehnen für landscape-Modus und stellen Sie es wieder eng werden für den portrait-Modus?
Dank
Lösung
Incase jemand ist auf der Suche nach einer Antwort auf, wie man ein Bild hinzufügen Navigationsleiste - hier geht
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 480.0, 44.0)];
[imgView setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"navbar_landscape" ofType:@"png"]]];
[navigationController.navigationBar addSubview:imgView];
[imgView release];
- Ich hatte zu ändern, die zweite Zeile zu: [imgView setImage:[UIImage imageNamed:@"navbar.png"]]; ...für den Fall, jemand kämpft mit Nichterscheinen wird.
- Danke, ähm der Beitrag ist ein bisschen alt, naja.., was über die änderung der Höhe der navigationBar ? Sollte ich die Unterklasse es sich in diesem Fall ?
InformationsquelleAutor lostInTransit | 2008-12-19
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie wahrscheinlich benötigen, um die autoresizingMask Ihrer hintergrund-Bild anzeigen; versuchen Sie es mit
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
Sowohl In der Bildschirm-Ausrichtung-Modi es ist viel besser,
Setzt dieses Bild auf alle anderen views und alle die Standard-Navigationsleiste-Elemente (Titel, standard-Schaltflächen) funktionieren OK.
Nach ein wenig Forschung und Versuch und Irrtum, fand ich eine Arbeit um, dass wird nicht ersetzen die navbar, wenn Sie geben Sie die Film-Wiedergabe-Modus. Hopeefully dies verursacht keine Probleme mit der app-Zulassung, aber basierend auf diesem post, ich denke, es sollte in Ordnung sein:
http://developer.apple.com/iphone/library/qa/qa2009/qa1637.html
Die Lösung Ben gegeben hat, das problem zu lösen, aber es streckt das Bild im landscape-Modus. Ich landete zwei Bilder - eines für die Landschaft und die anderen für den portrait-Modus. Ich habe dann Hinzugefügt, code in shouldAutoRotate zum ändern der navbar-image basierend auf der Ausrichtung
Können Sie das Bild ändern für hoch-und Querformat durch die Bereitstellung verschiedener Bilder für unterschiedliche Orientierungen durch die überprüfung der frame-Größe, dass UINavigation bar Beispiel:
Und das komplette demo-Xcode-Projekt auf die Anpassung der Darstellung von UINavigationBar hilfreich sein könnten. Es beinhaltet auch die @2x-Versionen von hintergrund-Bilder für retina-displays auf iPhone 4 Geräten.
Versuchen die einfachere Methode der
[UIImage imageNamed:@"navbar_landscape.png"]
seit ein UI-element ist genau das, was imageNamed: vorgesehen ist, als ljonesATL zeigt.