quitar poner personalizado pantalla interlineado iconos doble como cambiar ios swift ios8 uinavigationitem spacing

poner - pantalla sin iconos ios 11



Cambiar el espaciado entre UIBarButtonItems en iOS 8 (3)

De los documentos para UIBarButtonItem ...

Si el valor es 0.0 o negativo , el elemento establece el ancho de la imagen y el título combinados para que se ajusten.

Si establece el ancho en -20.0 , lo ignorará y usará el ancho estándar.

¿Qué es lo que estás tratando de lograr con un ancho negativo de todos modos? Estoy casi seguro de que habrá una mejor manera.

Tengo un UINavigationItem en mi controlador de vista , y estoy tratando de reducir el espacio entre mis dos elementos RightBarButtonItems . Aquí está algo de mi código:

// Create two UIBarButtonItems let item1:UIBarButtonItem = UIBarButtonItem(customView: view1) let item2:UIBarButtonItem = UIBarButtonItem(customView: view2) var fixedSpace:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) fixedSpace.width = -20.0 // Add the rightBarButtonItems on the navigation bar viewController.navigationItem.rightBarButtonItems = [item2, fixedSpace, item1]

Como se puede ver, estoy usando un FixedSpace UIBarButtonItem , pero esto no está cambiando el espaciado por alguna razón. He pensado en subclasificar el UINavigationItem o el UIBarButtonItem para poder establecer el espaciado en consecuencia, pero parece que no puedo encontrar ningún método que pueda reemplazar para cambiar el espaciado entre los elementos.

¡Cualquier información sobre cómo resolver este problema sería muy apreciada!


Gracias a la ayuda de @ Fogmeister, descubrí que el ancho de los objetos view1 y view2 , que son UIButtons , era demasiado grande. Por eso había un espaciamiento anormal entre ellos. Aquí está mi código final:

// Get the first button''s image var view1Img:UIImage = UIImage(named: "Image1")! // Create the first button var view1:UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: view1Img.size.width, height: view1Img.size.height)) // Get the second button''s image var view2Img:UIImage = UIImage(named: "Image2")! // Create the second button var view2:UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: view2Img.size.width, height: view2Img.size.height)) // Create two UIBarButtonItems let item1:UIBarButtonItem = UIBarButtonItem(customView: view1) let item2:UIBarButtonItem = UIBarButtonItem(customView: view2) // Set 26px of fixed space between the two UIBarButtonItems var fixedSpace:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) fixedSpace.width = 26.0 // Set -7px of fixed space before the two UIBarButtonItems so that they are aligned to the edge var negativeSpace:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) negativeSpace.width = -7.0 // Add the rightBarButtonItems on the navigation bar viewController.navigationItem.rightBarButtonItems = [negativeSpace, item2, fixedSpace, item1]

Creo la imagen de fondo para el primer UIButton y luego uso su tamaño para crear el marco para ese UIButton . Realizo las mismas acciones para el segundo UIButton . Luego, creo UIBarButtonItems partir de los dos UIButtons . Después de eso, creo 26px de espacio fijo y luego -7.0px de espacio fijo. El propósito del primero es crear una cierta cantidad de espacio entre los dos botones. El propósito de este último es mover todos los elementos UIBarButtonItems hacia la derecha. Luego, agrego todos los UIBarButtonItems como rightBarButtonItems en un orden particular para obtener el aspecto que quiero.

¡Funciona muy bien ahora! Gracias por toda la ayuda, Fogmeister!


Otra forma es simplemente cambiando la inserción de imagen izquierda y derecha en IB.