UIToolbar UIBarButtonItem对齐问题

3
我需要创建一个具有两个UIBarButtonItems的UIToolbar。第一个按钮必须居中,第二个项目必须右对齐。
我理解并使用Flexible spacing,当我需要平衡UIToolbar上的按钮时,它非常有效,但是只有两个按钮时,我似乎无法完美地将中间按钮居中。 我甚至已经使用view.toolbarItems数组进行了初始化。
NSArray *items = [[NSArray alloc] initWithObjects:fixed, flex, center_button, flex, right_button, nil];

并且设置fixed.width = right_button.width ... 但是,中心按钮仍然不完全居中。


请始终使用工具包标签,以便人们可以通过标签隐藏对他们不感兴趣的问题。 - user319799
3个回答

9

我最近也遇到了同样的问题,并通过创建一种类似于虚拟UIBarButtonItem的东西来解决它。在正确对齐方面的关键是将左右栏按钮的possibleTitles属性设置为相同的值,例如:

[right_button setPossibleTitles:[NSSet setWithObject:@"Abc"]];

// Create this fake (plain) button item on the left, to correct the alignment.
UIBarButtonItem *fake = [[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
[fake setEnabled:NO];
[fake setPossibleTitles:right_button.possibleTitles];

// The array for your toolbar items
NSArray *items = [[NSArray alloc] initWithObjects:fake, flex, center_button, flex, right_button, nil];

晚回复...我希望这仍然有所帮助。

我现在无法测试这个 - 但是很好的发现!我会尽快尝试。 - Luther Baker
谢谢!使用possibleTitles可以让我将三个按钮组中的中间播放按钮居中。我只需将外部按钮设置为相同的possible title即可。 - Paul Solt

1
问题是,UIBarButtonItem的宽度属性似乎总是为零。(我认为这是因为零被系统用作标志,使其成为“适当”的宽度。弹性空间也是同样的道理。)你可能需要在右侧按钮中使用图像(这样,你就知道它的宽度是多少),并用一个使用与右侧按钮相同大小的透明图像的“左侧按钮”替换你的固定空间。

0

看起来你的工具栏可能没有占满整个屏幕宽度,或者你的 center_button 没有在其框架中居中。你尝试过设置 center_button.imageInsets 吗?


UIToolbar是UINavigationController的一部分,可以横跨屏幕。中心按钮可以是任何UIBarButtonSystem项目,如果我有item、flex、item、flex、item,则可以正常工作。问题只在我想要一个空白位置在最左上角时才会出现。 - Luther Baker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接