tab guidelines buttons bar ios swift uinavigationcontroller uibarbuttonitem

ios - guidelines - imagen para el botón de la barra de navegación elemento swift



navigation bar ios (3)

Quiero mostrar una imagen en el lado izquierdo de mi barra de navegación de forma rápida.

He intentado agregar un elemento del botón de la barra de navegación y configurar una imagen allí.

El problema es que tengo que usar una imagen muy pequeña para que quepa bien en la barra de navegación. Pero hacer una imagen tan pequeña conduce a la pixelación, especialmente en los teléfonos iPhone 6 y 6 Plus más grandes.

¿Hay una manera de usar una imagen de buena calidad y luego configurar el marco para que se ajuste a los límites de la barra de navegación?

Mi intento:

var image = UIImage(named: "Harp.png") image = image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.Plain, target: nil, action: nil) self.navigationItem.leftBarButtonItem.frame = CGRectMake(0, 0, 53, 31) //image.frame = CGRectMake(0, 0, 53, 31)

Intenté colocar el marco en la imagen primero y luego en el elemento del botón de la barra. Pero esto está arrojando un error:

El tipo de expresión es ambiguo sin más contexto.


Hay una forma de usar imágenes de diferentes tamaños, dependiendo del dispositivo. Se llama un Catálogo de Activos. Probablemente ya tengas uno en tu proyecto, o si no, puedes agregar uno con File > New > File > Resource > Asset Catalogue .

Dentro de su Catálogo de Activos, puede tener múltiples ''Conjuntos de Imágenes'' (estos se mostrarán en el lado izquierdo). Agregue un nuevo conjunto de imágenes con el ''+'' en la parte inferior. Para cada conjunto de imágenes, puede suministrar diferentes imágenes (por ejemplo, de diferentes tamaños) para cada uno de @ 1x, @ 2x y @ 3x.

Luego, para usar una de estas imágenes en el código, simplemente use UIImage(named: "name_of_image_set") - no tenga en cuenta ninguna extensión. La imagen correcta se cargará, dependiendo del dispositivo.

¡Espero que esto ayude!


Prueba esto

let button = UIButton(type: UIButtonType.Custom) button.setImage(UIImage(named: "yourImageName.png"), forState: UIControlState.Normal) button.addTarget(self, action:Selector("callMethod"), forControlEvents: UIControlEvents.TouchDragInside) button.frame=CGRectMake(0, 0, 30, 30) let barButton = UIBarButtonItem(customView: button) self.navigationItem.leftBarButtonItems = [newBackButton,barButton]

Para Swift 3

let button = UIButton.init(type: .custom) button.setImage(UIImage.init(named: "yourImageName.png"), for: UIControlState.normal) button.addTarget(self, action:#selector(ViewController.callMethod), for:.touchUpInside) button.frame = CGRect.init(x: 0, y: 0, width: 30, height: 30) //CGRectMake(0, 0, 30, 30) let barButton = UIBarButtonItem.init(customView: button) self.navigationItem.leftBarButtonItem = barButton

Aqui esta la accion

func callMethod() { //do stuff here }


Usa este código:

self.navigationItem.leftBarButtonItem = nil let button = UIButton(type: .custom) button.setImage(UIImage (named: "ChatTab"), for: .normal) button.frame = CGRect(x: 0.0, y: 0.0, width: 35.0, height: 35.0) //button.addTarget(target, action: nil, for: .touchUpInside) let barButtonItem = UIBarButtonItem(customView: button) let button2 = UIButton(type: .custom) button2.setImage(UIImage (named: "ActivityTab"), for: .normal) button2.frame = CGRect(x: 0.0, y: 0.0, width: 35.0, height: 35.0) //button.addTarget(target, action: nil, for: .touchUpInside) let barButtonItem2 = UIBarButtonItem(customView: button2) self.navigationItem.rightBarButtonItems = [barButtonItem, barButtonItem2]

Salida: