iphone - ¿Puedo tener un UIBarButtonItem con una imagen coloreada?
objective-c (5)
Hay otra manera que no implica codificación en absoluto.
Primero, coloque las imágenes que desea colocar en la barra en el documento Assets.xcassets.
Seleccione la imagen en el navegador de activos.
Abra el inspector de Atributos para esa imagen en la barra de herramientas vertical derecha.
En "Renderizar como", seleccione "Imagen original".
Aunque en el guión gráfico los botones seguirán pintados con el color del tinte, cuando se ejecuta en el simulador se mostrará la imagen original.
El modo de representación predeterminado para una imagen varía de un control de interfaz de usuario a otro. Sin embargo, si configura este parámetro en el inspector de atributos, puede forzar que una imagen siempre se represente con un modo de representación específico.
Si necesita que se represente la misma imagen con diferentes modos de representación en diferentes controladores, entonces la respuesta de MANIAK_dobrii es más apropiada.
Tengo una imagen que quiero mostrar en un UIBarButtonItem, pero por alguna razón solo muestra el contorno y el resto es todo blanco. ¿Cómo puedo hacer que realmente muestre la imagen?
¡Gracias!
Hay otra solución iOS7 +:
NSString *iconFilename = // ...
UIImage *image =
[[UIImage imageNamed:iconFilename]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *barButtonItem =
[[UIBarButtonItem alloc] initWithImage:image
style:UIBarButtonItemStylePlain
target:self
action:@selector(onBarButtonItemTapped:)];
Extracto de UIImage.h:
... barras de navegación, barras de pestañas, barras de herramientas y controles segmentados tratan automáticamente sus imágenes de primer plano como plantillas ... Puede usar UIImageRenderingModeAlwaysTemplate para forzar que su imagen se represente siempre como una plantilla o UIImageRenderingModeAlwaysOriginal para forzar que su imagen se muestre siempre como un original.
Nop. Como puede leer en las Pautas de interfaz humana
Una vez que haya decidido la apariencia de su icono, siga estas pautas a medida que lo cree:
Usa el formato PNG. Use blanco puro con el alfa apropiado. No incluya una sombra paralela. Use 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, crea un icono que mida unos 20 x 20 píxeles. Para los iconos de la barra de pestañas, crea un icono que mida unos 30 x 30 píxeles.
Nota: El icono que proporciona para barras de herramientas, barras de navegación y barras de pestañas se usa como máscara para crear el icono que ve en su aplicación. No es necesario crear un ícono a todo color.
ACTUALIZACIÓN: vea la respuesta de MANIAK_dobrii para una solución más fácil, disponible en iOS 7+.
Aquí es cómo uso una imagen para un UIBarButtonItem:
UIImage *image = [UIImage imageNamed:@"buttonImage.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = CGRectMake( 0, 0, image.size.width, image.size.height );
[button setImage:image forState:UIControlStateNormal];
[button addTarget:myTarget action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
…
En Swift 3:
let iconname = // ...
let image = UIImage(named: iconname)?.withRenderingMode(.alwaysOriginal)
let barButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(self. onBarButtonItemTapped))
self.navigationItem.leftBarButtonItem = barButtonItem