2010-05-25 6 views
17

Con qualsiasi immagine provo a intializzare UIBarButtonItem, mostra solo uno sfondo bianco nella dimensione dell'immagine. Anche quando sono stanco nel costruttore di interfacce, il risultato è lo stesso. Tutte queste immagini se usate con altri oggetti funzionano perfettamente.UIBarButtonItem L'immagine non viene mostrata e viene invece visualizzato un rettangolo bianco nella dimensione dell'immagine, perché?

Come posso risolvere questo ??

+0

difficile dire senza vedere il codice o di installazione IB – willcodejavaforfood

risposta

18

Solo i valori alfa nell'immagine vengono utilizzati per creare l'immagine del pulsante della barra. Qualunque immagine tu fornisci viene convertita in un'immagine con sfumature di bianco, in base ai valori alfa.

Quindi, dato che l'immagine è completamente bianca, è chiaro che non hai alcuna trasparenza.

Il guidelines hanno questo da dire:

  • utilizzare il formato PNG.
  • Utilizzare bianco puro con alfa appropriato.
  • Non includere un'ombra esterna.
  • Utilizzare l'anti-aliasing.
  • Se si decide di aggiungere uno smusso, assicurarsi che sia 90 ° (per facilitare l'operazione , immaginare una sorgente luminosa posizionata nella parte superiore dell'icona).
  • Per le icone della barra degli strumenti e della barra di navigazione, creare un'icona che misura circa 20 x 20 pixel.
  • Per le icone della barra delle schede, creare un'icona che misura circa 30 x 30 pixel.

Nota: L'icona che fornisci per barre degli strumenti, barre di navigazione e scheda barre viene utilizzato come maschera per creare l'icona che vedete nella vostra applicazione. È non è necessario creare un'icona a colori a .

È tuttavia possibile utilizzare una visualizzazione personalizzata per ottenere un'immagine a colori come questa domanda dimostra:

Can I have a UIBarButtonItem with a colored image?

Questo è un po 'sopra le righe e anche se sarebbe meglio attenersi alle linee guida e utilizzare un pulsante normale con un'immagine opportunamente formattata.

9

in IOS 7 in poi questo aiuterà

UIImage *image = [[UIImage imageNamed:@"myImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(YOUR_METHOD:)]; 
5

In Swift 3 ho trovato che i seguenti lavori - qui mostrate come una matrice di più barButtonItem

let barButtonItem1 = UIBarButtonItem(image: UIImage(named: "myImage")?.withRenderingMode(.alwaysOriginal) , style: .plain ,target: self, action: #selector(yourAction)) 
    let barButtonItem2 = UIBarButtonItem(image: UIImage(named: "myImage")?.withRenderingMode(.alwaysOriginal) , style: .plain, target: self, action: #selector(yourAction)) 

navigationItem.rightBarButtonItems = [barButtonItem1, barButtonItem2] 

viene presentata barButtons x2 Sul lato destro. Per mostrato sinistra semplicemente cambiare a

navigationItem.leftBarButtonItem = [barButtonItem1, barButtonItem2]