2010-05-25 16 views
17

Con cualquier imagen que intente inicializar UIBarButtonItem, solo muestra un fondo blanco en el tamaño de la imagen. Incluso cuando me cansé en el constructor de interfaces, el resultado es el mismo. Todas estas imágenes cuando se usan con otros objetos funcionan perfectamente.UIBarButtonItem La imagen no se muestra y en su lugar se muestra un rectángulo blanco en el tamaño de la imagen, ¿Por qué?

¿Cómo puedo solucionar esto?

+0

difícil decir sin ver su código o configuración del IB – willcodejavaforfood

Respuesta

18

Solo los valores alfa de la imagen se utilizan para crear la imagen del botón de la barra. Cualquier imagen que proporciones se convierte en una imagen con tonos de blanco, en función de los valores alfa.

Dado que su imagen es completamente blanca, está claro que no tiene ninguna transparencia.

El guidelines tiene esto que decir:

  • utilizar el formato PNG.
  • Utilice blanco puro con el alfa adecuado.
  • No incluya una sombra paralela.
  • Utilice anti-aliasing.
  • Si decide agregar un bisel, asegúrese de que sea de 90 ° (para ayudarlo a hacer esto, imagine una fuente de luz ubicada en la parte superior del icono).
  • Para la barra de herramientas y los iconos de la barra de navegación, cree un icono que mida con unos 20 x 20 píxeles.
  • Para los iconos de la barra de pestañas, cree un icono que mida unos 30 x 30 píxeles.

Nota: El icono que proporciona para barras de herramientas, barras de navegación, y la pestaña barras se utiliza como una máscara para crear el icono que se ve en su aplicación. No es necesario para crear un icono a todo color .

Sin embargo, puede utilizar una vista personalizada para obtener una imagen a todo color, ya que esta cuestión muestra:

Can I have a UIBarButtonItem with a colored image?

Esto es un poco por encima, aunque y que sería mejor Siga las pautas y use un botón normal con una imagen formateada apropiadamente.

9

En iOS 7 en adelante esto ayudará

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

En Swift 3 He descubierto que las siguientes obras - aquí se muestra como un conjunto de más de un 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] 

Esta muestra barButtons x2 al lado derecho. Para se muestra a la izquierda simplemente cambiar a

navigationItem.leftBarButtonItem = [barButtonItem1, barButtonItem2]

Cuestiones relacionadas