¿Cómo alinear UIBarButtonItem en UIToolbar en la aplicación universal de iOS?
xcode swift (4)
Quiero poner dos instancias de UIToolbar
en UIToolbar
en mi aplicación universal de iOS, en la que el primer elemento está en el borde izquierdo de la barra de herramientas y el segundo en el centro. Sin embargo, parece que esto no se puede hacer en Interface Builder, porque el diseño automático no admite restricciones de forzado en la clase UIBarButtonItem
debido a que no es una subclase de UIView
.
Tenga en cuenta que no quiero poner el primero en el borde izquierdo y el segundo en el borde derecho, tengo que colocar el segundo botón en el centro . Además, no tengo un plan para usar el tercer botón para alinearlos como izquierda, centro y derecha en el mismo intervalo.
¿Es posible agregar tal restricción en esta situación en el guión gráfico? Yo uso Xcode 6 beta 5.
Código para añadir barra de herramientas:
Aquí el ancho fijo puede ser variable. En consecuencia, puede mantenerlo todo lo que desee para mantener el segundo botón en el centro.
UIBarButtonItem *fixedItemSpaceWidth = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
fixedItemSpaceWidth.width = 200.0f; // or whatever you want
UIBarButtonItem *doneBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonAction:)];
UIBarButtonItem *cancelBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonAction:)];
// Initialise toolabr
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height-44, 320, 44)];
//toolbar.barStyle = UIBarStyleBlack;
toolbar.items = [NSArray arrayWithObjects:cancelBarButton,fixedItemSpaceWidth,doneBarButton, nil];
[self.view addSubview:toolbar];
Creo que deberías probar el ítem del espacio del botón de la barra flexible y, para más información, estoy compartiendo un enlace, así que si lo miras podría ayudarte.
Elementos de botón de barra de herramientas y barra flexible y barra flexible
Puedes hacerlo todo en tu Storyboard.
Seleccione un Bar Button Item
en la biblioteca de objetos y arrástrelo a su Toolbar
. Agrega un Flexible Space Bar Button Item
a su derecha. Agregue su segundo Bar Button Item
a su derecha. Luego, agregue un segundo Flexible Space Bar Button Item
a su derecha.
El resultado se verá así en Interface Builder:
Si es necesario, puede agregar un Fixed Space Bar Button Item
adicional en el borde derecho de la Toolbar
de Toolbar
para asegurarse de que el segundo Bar Button Item
esté realmente centrado.
El usuario lxt da otro ejemplo de esto en respuesta a una pregunta similar here .
Edición: ¡ Asegúrese de que su barra de herramientas tenga buenas restricciones antes de continuar!
puedes hacer esto programáticamente
UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item1" style:UIBarButtonItemStylePlain target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item2" style:UIBarButtonItemStylePlain target:self action:nil];
UIBarButtonItem *item3 = [[UIBarButtonItem alloc] initWithTitle:@"item3" style:UIBarButtonItemStylePlain target:self action:nil];
self.toolbarItems = [NSArray arrayWithObjects: item1, flexible, item2, flexible, item3, nil];
Consulta este enlace si quieres más detalles.
¿Cómo colocar UIBarButtonItem en el lado derecho de un UIToolbar?