ios xcode swift autolayout uibarbuttonitem

¿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];



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?