Pregunta

He creado tres UIBarButtonItem como se muestra a continuación. Se alinean a la izquierda y me gustaría alinear el centro para que no haya un espacio en el lado derecho. No veo una propiedad de alineación en UIToolBar . ¿Hay otra manera de lograr esto?

//create some buttons
UIBarButtonItem *aboutButton = [[UIBarButtonItem alloc] initWithTitle:@"About" style:UIBarButtonItemStyleBordered target:self action:@selector(showAbout:)];
[toolbar setItems:[NSArray arrayWithObjects:settingsButton,deleteButton,aboutButton,nil]];
//Add the toolbar as a subview to the navigation controller.
[self.navigationController.view addSubview:toolbar];
¿Fue útil?

Solución

Agregue dos elementos UIBarButtonSystemItemFlexibleSpace a su barra de herramientas, a la izquierda y derecha de sus elementos

UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[toolbar setItems:[NSArray arrayWithObjects:flexibleSpace, settingsButton,deleteButton,aboutButton, flexibleSpace, nil]];

Al agregar estos como lo harías con cualquier otro elemento de la barra de herramientas, se distribuirá el espacio de manera uniforme entre los dos.

Otros consejos

Esto también se puede hacer directamente desde un guión gráfico.

Simplemente arrastre y suelte los elementos en la barra de herramientas y convierta algunos de ellos en un espacio flexible o fijo para obtener el efecto deseado. Vea los dos ejemplos a continuación.

Espaciado uniformemente

Centrado

En Xamarin iOS

Alineado a la derecha:

yourBar.SetItems(new [] { new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), yourButton }, false);

Centro alineado:

var flexibleSpace = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
yourBar.SetItems(new [] { flexibleSpace, yourButton, flexibleSpace}, false);

Versión Swift:

    let toolbar = UIToolbar(frame: CGRectMake(0, 0, viewController.view.frame.size.width, 35.0))
    let flexibleSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: viewController, action: nil)
    let button1 = UIBarButtonItem(title: "A", style: UIBarButtonItemStyle.Plain, target: viewController, action: foo)
    let button2 = UIBarButtonItem(title: "B", style: UIBarButtonItemStyle.Plain, target: viewController, action: bar)
    let button3 = UIBarButtonItem(title: "C", style: UIBarButtonItemStyle.Plain, target: viewController, action: blah)
    toolbar.items = [button1, flexibleSpace, button2, flexibleSpace, button3]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top