2010-06-20 11 views
11

Comment cet effet est-il atteint? Les extraits de code sont les bienvenus.Arrière-plan personnalisé/fond transparent sur UIBarButtonItem?

Ceci peut être vu dans l'application Notes et d'autres applications sur l'App Store.

Il semble que les boutons du contrôleur de navigation soient transparents et affichent l'arrière-plan personnalisé du contrôleur de navigation ou qu'un arrière-plan personnalisé leur soit appliqué. Des idées sur la façon dont cela est réalisé?

EDIT:

Voici un exemple de l'application iBooks pour l'iPhone. Comme vous pouvez le voir, non seulement les UIButtons, mais aussi le contrôle segmenté ont des arrière-plans personnalisés. Je pense qu'il existe un moyen de définir globalement la transparence/l'arrière-plan des différents éléments de l'interface.

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

+0

J'ai rempli un bug (radar: 12433673) et ajouté un exemple de projet de code. – Gujamin

Répondre

13

Si vous voulez avoir UIBarButtonItem partout dans votre application, ce que vous pouvez faire est dans votre AppDelegate.m et dans votre méthode application:didFinishLaunchingWithOptions:, vous pouvez écrire

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

Cela va créer une image vide, et il définirez UIBarButtonItem l'arrière-plan de cette image. En l'écrivant en AppDelegate, vous vous assurez que partout où vous utilisez un UIBarButtonitem il aura un arrière-plan transparent, même vos boutons de retour.

+0

travailler comme un charme – Zerho

+0

Merci beaucoup .... vous m'a sauvé bro –

4

Je ne pense pas que vous pouvez le rendre transparent tout en établissant une sorte de propriété (mais je peux me tromper). Voir la documentation UIBarButtonItem. Il existe init méthodes qui prendront une vue personnalisée ou une image et en créeront un UIBarButtonItem. Créez donc une vue ou une image avec l'apparence que vous voulez et utilisez-la. Une chose que vous pourriez vouloir essayer est de créer un UIButton la façon dont vous voulez regarder, puis faire [[UIBarButtonItem alloc] initWithCustomView:button];

Une autre solution consiste à envoyer la propriété tintColor de votre UINavigationBar à la couleur que vous voulez, et le bouton prendra sur cette couleur.

3

Vous pouvez également créer un UIButton standard et définir son style sur mesure et définir votre image ou couleur d'arrière-plan pour ce bouton et faites-le glisser sur le UINavigationBar.

+0

et bien sûr juste quand je frappe soumettre je vois que Macatomy a dit cela. donc euh ... ce qu'ils ont dit :) – AtomRiot

1

Vous pouvez également utiliser le proxy Apparence pour définir la propriété backgroundImage des UIBarButtonItems à votre propre image transparente:

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

Notez que je pense qu'il ya un bug lors de la mise EISN à certaines valeurs (11 13? ?) Si vous rencontrez des problèmes, essayez de changer les encarts, car vous avez peut-être trébuché sur ce bug.