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!