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 怎么样