2010-06-20 12 views
11

Wie wird dieser Effekt erreicht? Code-Snippets sind sehr willkommen.Benutzerdefinierter Hintergrund/transparenter Hintergrund für UIBarButtonItem?

Dies kann in Notes App und anderen Apps im App Store gesehen werden.

Es scheint, dass entweder die Schaltflächen auf dem Navigationscontroller transparent sind und den benutzerdefinierten Hintergrund des Navigationscontrollers anzeigen oder dass sie selbst einen benutzerdefinierten Hintergrund haben. Irgendwelche Ideen, wie dies erreicht wird?

EDIT:

Hier ist ein Beispiel aus dem iBooks-App für das iPhone. Wie Sie sehen können, haben nicht nur die UIB-Schaltflächen, sondern auch das segmentierte Steuerelement einen benutzerdefinierten Hintergrund. Ich denke, dass es eine Möglichkeit gibt, Transparenz/Hintergrund für verschiedene Oberflächenelemente global festzulegen.

example http://c0839932.cdn.cloudfiles.rackspacecloud.com/iBooks%201.1%20-%206.png

+0

Ich füllte einen Fehler (Radar: 12433673) und fügte ein Beispielcode-Projekt hinzu. – Gujamin

Antwort

13

Wenn Sie UIBarButtonItem überall in Ihrer Anwendung haben mögen, was Sie tun können, in Ihrem AppDelegate.m und in Ihrer application:didFinishLaunchingWithOptions: Methode ist, können Sie

[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage alloc] init] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

schreiben Dies wird ein leeres Bild erstellen, und es wird festgelegt UIBarButtonItem 's Hintergrund zu diesem Bild. Mit dem Schreiben in AppDelegate werden Sie sicherstellen, überall wo Sie eine UIBarButtonitem verwenden, wird es transparenten Hintergrund haben, sogar Ihre Zurück-Tasten.

+0

Arbeit wie ein Charme – Zerho

+0

Vielen Dank .... du hast mich gerettet bro –

4

Ich glaube nicht, dass Sie es, indem Sie eine Art von Eigentum nur transparent machen können (aber ich könnte falsch sein).

Schauen Sie sich die UIBarButtonItem Dokumentation an. Es gibt init Methoden, die eine benutzerdefinierte Ansicht oder ein Bild erstellen und eine UIBarButtonItem daraus erstellen. Erstellen Sie also eine Ansicht oder ein Bild mit der gewünschten Darstellung und verwenden Sie diese. Eine Sache, die Sie vielleicht ausprobieren möchten ist zu erstellen ein UIButton so, wie Sie es haben wollen schauen, und dann tun [[UIBarButtonItem alloc] initWithCustomView:button];

Eine andere Lösung ist, um die tintColor Eigentum Ihrer UINavigationBar gesendet, was Farbe Sie wollen, und die Taste nehmen auf dieser Farbe.

3

Sie können auch einen Standard UIButton erstellen und seinen Stil benutzerdefiniert festlegen und Ihre Bild- oder Hintergrundfarbe für diese Schaltfläche festlegen und auf die UINavigationBar ziehen.

+0

und natürlich richtig, wenn ich eintrage, sehe ich, dass Macatomy genau das gesagt hat. So ähm ... was sie sagten :) – AtomRiot

1

Sie könnten auch das Aussehen Proxy verwenden, um die Background Eigenschaft der UIBarButtonItems Ihr eigenes transparentes Bild zu setzen:

UIImage *buttonImage = [[UIImage imageNamed:@"barButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 8, 12, 8)]; 
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

Bitte beachte, dass ich denke, ein Fehler gibt es, wenn die Einsätze auf bestimmte Werte einstellen (11 13? ?) Wenn Sie Probleme haben, versuchen Sie, die Einfügungen zu ändern, da Sie möglicherweise über diesen Fehler gestolpert sind.

Verwandte Themen