UIToolbar UIBarButtonItem 对齐问题

Posted

技术标签:

【中文标题】UIToolbar UIBarButtonItem 对齐问题【英文标题】:UIToolbar UIBarButtonItem Alignment question 【发布时间】:2010-05-02 18:39:01 【问题描述】:

我需要创建一个具有两个 UIBarButtonItems 的 UIToolbar。第一个按钮必须居中,第二个项目必须右对齐。

我了解并使用灵活间距,当我需要平衡 UIToolbar 上的按钮时,它非常有用,但只有两个按钮,我似乎无法完美地居中中间按钮。我什至用

初始化了 view.toolbarItems 数组
NSArray *items = [[NSArray alloc] initWithObjects:fixed, flex, center_button, flex, right_button, nil];

并设置 fixed.width = right_button.width ...但是,center_button 永远不会完全居中。

【问题讨论】:

请始终使用工具包标记,以便人们可以通过标记隐藏对他们不感兴趣的问题。 【参考方案1】:

我最近遇到了同样的问题,并通过创建一种假的 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];

迟到的答案...我希望这仍然可以提供帮助。

【讨论】:

我现在无法测试这个 - 但很好!有机会我会尽快尝试的。 谢谢!使用 possibleTitles 可以让我将中间的播放按钮集中在一组三个按钮中。我只是将外部按钮设置为相同的可能标题。【参考方案2】:

问题是,UIBarButtonItem 的宽度属性似乎总是​​为零。 (我认为这是因为系统将零用作标志以使其成为“适当的”宽度。弹性空间也是如此。)您可能需要做的是在您的右键中使用图像(即方式,你知道它的宽度是多少),并用一个“左按钮”替换你的固定空间,该按钮使用与右按钮大小相同的透明图像。

【讨论】:

【参考方案3】:

听起来您的工具栏不是屏幕的整个宽度,或者您的 center_button 没有在其框架中居中。你试过设置center_button.imageInsets吗?

【讨论】:

确实,UIToolbar 是 UINavigationController 的一部分,并且横跨屏幕。如果我有 item、flex、item、flex、item,中心按钮可以是任何 UIBarButtonSystem 项目。只有当我想在最左角有一个空白点时,问题才会出现。

以上是关于UIToolbar UIBarButtonItem 对齐问题的主要内容,如果未能解决你的问题,请参考以下文章

更改 UIBarButtonItem 的 UIToolbar 阴影颜色

将 UIBarButtonItem 添加到 UIToolbar

UIBarButtonItem 在 UIToolBar 中不可点击

iphone - 如何在没有 UIToolBar 的情况下使用 UIBarButtonItem 样式

UIToolBar 上的 UIBarbuttonItem 的动作没有被调用

将带有两个 UIBarButtonItem 的 UIToolbar 添加到 UINavigationBar:糟糕的 UIToolbar 以及 iPhone 4 怎么样