2010-06-20 36 views
11

Come viene raggiunto questo effetto? Gli snippet di codice sono altamente benvenuti.Sfondo personalizzato/sfondo trasparente su UIBarButtonItem?

Questo può essere visualizzato nell'app Note e in altre app sull'App Store.

Sembra che i pulsanti sul controller di navigazione siano trasparenti e mostrino lo sfondo personalizzato del controller di navigazione o che a loro si applichi uno sfondo personalizzato. Qualche idea su come è stata realizzata?

EDIT:

Ecco un esempio dal app iBooks per iPhone. Come puoi vedere, non solo gli UIButtons, ma anche i controlli segmentati hanno sfondi personalizzati. Sto pensando che c'è un modo per impostare la trasparenza/lo sfondo su diversi elementi dell'interfaccia.

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

+0

Ho riempito un bug (radar: 12433673) e aggiunto un progetto di codice di esempio. – Gujamin

risposta

13

Se si desidera avere UIBarButtonItem ovunque nella vostra applicazione, cosa si può fare è nel vostro AppDelegate.m e nel metodo application:didFinishLaunchingWithOptions:, è possibile scrivere

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

Questo creerà un'immagine vuota, e si imposterà Lo sfondo di UIBarButtonItem su quell'immagine. Con la scrittura in AppDelegate ti assicurerai che ovunque tu stia usando uno UIBarButtonitem avrà uno sfondo trasparente, anche i tuoi pulsanti posteriori.

+0

funziona come un fascino – Zerho

+0

Grazie mille .... mi hai salvato –

4

Non credo che si può rendere trasparente semplicemente impostando una sorta di proprietà (ma potrei sbagliarmi).

Consultare la documentazione di UIBarButtonItem. Esistono i metodi init che richiedono una visualizzazione personalizzata o un'immagine e creano uno UIBarButtonItem da esso. Quindi crea una vista o un'immagine con l'aspetto che desideri e usala. Una cosa che si potrebbe desiderare di provare è quello di creare un UIButton il modo in cui si desidera guardare, e poi fare [[UIBarButtonItem alloc] initWithCustomView:button];

Un'altra soluzione è quella di inviato alla proprietà tintColor del UINavigationBar a qualsiasi colore che si desidera, e il pulsante prenderà su quel colore

3

È inoltre possibile creare uno standard UIButton e impostare lo stile su personalizzato e impostare il colore dell'immagine o dello sfondo per quel pulsante e trascinarlo sullo UINavigationBar.

+0

e ovviamente quando premo submit vedo che Macatomy ha detto proprio questo. quindi ... cosa hanno detto :) – AtomRiot

1

Si potrebbe anche usare il proxy Aspetto per impostare la proprietà BackgroundImage dei UIBarButtonItems per la propria immagine trasparente:

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

noti che penso che ci sia un bug quando si impostano i inserti a certi valori (11 13? ?), quindi se stai riscontrando problemi, prova a modificare gli inset come potresti esserti imbattuto in quel bug.