在 UITabbar 上方使用 UIToolbar - 有可能吗?

Posted

技术标签:

【中文标题】在 UITabbar 上方使用 UIToolbar - 有可能吗?【英文标题】:Using UIToolbar above UITabbar - is it possible? 【发布时间】:2012-10-19 14:51:00 【问题描述】:

我的问题与one 类似,但在那里没有完全回答。

我想要做的,是将一个现有的基于导航的应用程序在单个UITableViews 的底部具有不同的UIToolbars 转换为具有UITabbar 界面的应用程序。其中一个选项卡应显示与现有应用程序相同的 UITableView 数据层次结构(显示某种层次结构数据),而其他选项卡将分配其他无关紧要的内容(例如:设置、帮助...)这里。这个想法是允许用户从导航堆栈的任何阶段快速切换到“帮助”屏幕 - 并返回。

例如,使用 3 个选项卡:

 1. Database root (UIToolbar) - folder 1 (UIToolbar) - file 1.1
                                                     - file 1.2
                              - folder 2 (UIToolbar) - file 2.1
                                                     - file 2.2
 2. Help (no UIToolbar)
 3. Settings (no UIToolbar)

我从未在任何现有的应用程序中看到过这样的设计,尽管the question cited above 建议实际上可以将现有的 UIToolbars 从旧应用程序中保留下来,并将它们简单地放在标签栏上方。

这是吗

技术上可行(没有问题,例如设备旋转)? 接口指南允许?

尽管示例代码将不胜感激,但我主要想知道是否值得尝试构建这样的应用程序 - 或者这样的设计首先是否是一个坏主意。

【问题讨论】:

【参考方案1】:

您可以在任何地方拥有一个 UITabBar,只是不会使用它的控制器。您必须编写自己的控制器并处理设备旋转期间发生的事情(或使用 ios 6 的自动布局功能)。

【讨论】:

【参考方案2】:

我试过了,现在我可以回答我自己的问题了:

如果您确保每个选项卡的视图都可以旋转,这是可能的,并且设备旋转没有问题。 虽然看起来有点不寻常,但我觉得它非常有用。当然,它会占用一些垂直空间。

至于实现,我发现它非常简单: 我所要做的就是使用 Interface Builder 插入一个 UITabBarController 来代替我原来的主要 UIViewController 并将后者移动到前者的第一个选项卡。然后在里面创建更多带有UIViewControllers 的选项卡,并将它们的类重命名为我现有的其他UIViewControllers 的类。最后,在相关的界面构建器检查器窗格中手动为所有这些控制器设置关联的 NIB 文件(因为它们现在不再由我的代码实例化)并更改一行代码以使 UITabBarController 成为 root 控制器。

结果:UIToolbar 出现在第一个选项卡的 UITabbar 上方,但其他选项卡不显示。它的位置是固定的(当滚动列表或类似时),但它会与标签栏和其他所有内容一起自动旋转。

【讨论】:

以上是关于在 UITabbar 上方使用 UIToolbar - 有可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 UITabBar 或 UIToolBar

带有类似于 uitabbar 的图标/文本的 uitoolbar

UITabBar 看起来像 UIToolBar(改变 UITabBar 的颜色)

用 UIToolBar 替换 UITabBar

iOS7 无法淡化 UIToolbar 或 UITabbar

如何在 iOS 11 和 iPhone X 上实现隐藏 UITabBar 以显示 UIToolbar