Pergunta

eu tenho três UIBarButtonItem criado como abaixo. Eles se alinham à esquerda e eu gostaria de alinhar o centro para que não haja uma lacuna no lado direito. Eu não vejo uma propriedade alinhada em UIToolBar. Existe outra maneira de conseguir isso?

//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];
Foi útil?

Solução

Adicione dois itens uibarbuttonsystemitemflexibleSpace à sua barra de ferramentas, à esquerda e à direita de seus itens

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

Adicioná -los como você faria com que outros itens da barra de ferramentas distribuam o espaço uniformemente entre os dois.

Outras dicas

Isso também pode ser feito diretamente a partir de um storyboard.

Basta arrastar e soltar itens na barra de ferramentas e transformar alguns deles em espaço flexível ou fixo para obter o efeito desejado. Veja os dois exemplos abaixo.

Evenly spaced

Centered

Em Xamarin iOS

Direito alinhado:

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

Centro alinhado:

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

Versão 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top