垂直 UIToolBar 及其 UIBarButtonItem

Posted

技术标签:

【中文标题】垂直 UIToolBar 及其 UIBarButtonItem【英文标题】:Vertical UIToolBar and also its UIBarButtonItem 【发布时间】:2012-11-22 12:27:46 【问题描述】:

在我的应用程序中,我有一个 UIToolBar。在纵向模式下,此工具栏位于顶部且水平,但当设备旋转时,此工具栏应转换为垂直工具栏并应放置在左侧。此外,它的子视图,即 5 个 UIBarButtonItems 也应相应放置。

有人知道解决办法吗?

我已阅读this 以供参考,但我的工具栏应根据方向自行对齐。我正在使用 ios 6。

【问题讨论】:

【参考方案1】:

没有内置的垂直菜单功能(目前)。您的问题分为两部分:

垂直UIToolbar

您可以限制设备方向,工具栏将保持在同一位置

- (NSUInteger)supportedInterfaceOrientations 
    return UIInterfaceOrientationMaskPortrait;

(这将影响所有视图)

或者你可以监听方向变化并使用它的 transform 属性相应地旋转你的工具栏,例如

toolbar.transform = CGAffineTransformRotate(CGAffineTransformIdentity, M_PI/2);

旋转的UIBarButtonItem

如果您旋转了工具栏(上面的案例 2),项目也会旋转。 如果没有,您需要轮换您的物品。几篇文章展示了如何处理 UIBarButtonItem 没有扩展 UIView 的事实,它没有转换属性 (see here)。最后,您将不得不再次监听方向变化并旋转工具栏的子视图,例如

for (UIView *view in toolbar.subviews) 
    view.transform = CGAffineTransformRotate(CGAffineTransformIdentity, M_PI/2);

当然应用与您的方向相关的旋转(M_PI/2 或 -M_PI/2)。

【讨论】:

【参考方案2】:

我遇到了同样的问题,所以我将UIToolbar 子类化,并将其变成了我想要的样子。 这是 GitHub 链接:https://github.com/fennelouski/NKFToolbar

【讨论】:

以上是关于垂直 UIToolBar 及其 UIBarButtonItem的主要内容,如果未能解决你的问题,请参考以下文章

UIToolbar 标准尺寸

iOS 7 的 UIToolbar 中 UIBarButtonItems 的垂直位置不正确

在 UIToolbar 内向上移动 UIBarButtonItems

更改 UIBarButtonItem 的 UIToolbar 阴影颜色

如何将 UIToolbar 添加到 UISplitViewController 的两个视图中?

横向模式下 UIBarButtonItem 的垂直对齐太低