views:

471

answers:

2

I need to create a UIToolbar that has two UIBarButtonItems. The 1st button must be centered and the 2nd item must be right aligned.

I understand and use Flexible spacing and it works great when I need to balance buttons across the UIToolbar, but with only two buttons, I can't seem to perfectly center the middle button. I've even initialized the view.toolbarItems array with

NSArray *items = [[NSArray alloc] initWithObjects:fixed, flex, center_button, flex, right_button, nil];

and set fixed.width = right_button.width ... but still, the center_button is never perfectly centered.

A: 

It sounds like either your toolbar is not the full width of the screen, or your center_button isn't centered in its frame. Have you tried setting center_button.imageInsets?

chrispix
Indeed, the UIToolbar is part of a UINavigationController and stretches across the screen. The center button can be any of the UIBarButtonSystem items which work just fine if I have item,flex,item,flex,item. The problem manifests itself only when I want a blank spot in the far left corner.
Luther Baker
A: 

The problem is, a UIBarButtonItem's width property seems to always be zero. (I think it is because zero is used as a flag by the system to make it the "appropriate" width. A flex space is the same way.) What you might have to do is to use an image in your right button (that way, you know what its width will be), and replace your fixed space with a "left button" that uses a transparent image of the same size as the right button.

That Don Guy