Tabbed-style UINavigationBar iOS 8

Tabbed-style UINavigationBar iOS 8

UIViewController 中,我想在 和 UINavigationBar 中显示两个选项卡 。我希望 UINavigationItems 具有与 UITabBarController 中的 UITabBarItems 类似的行为。我希望导航栏在两个视图控制器选项卡中都可见,如果选项卡是 selected.

,我想更改导航栏中选项卡标题的颜色

有没有一种简单而优雅的方法可以方便地设置text/selectedText或image/selectedImage并创建具有类似于[=的行为的UINavigationItems 15=],包括让导航栏 space 均匀显示项目的能力,就像在 UITabBarController?

中一样

如果我能像在 tabBar 中那样设置它就太好了: UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTitle:title image:titleBlack selectedImage:titleRed];

目标是有两个选项卡,如果它们被 selected 会改变颜色,并且它们会均匀地 spaced 横跨栏。我知道我可以做一些简单的事情,比如将两个项目添加到 navBarArray,但是为了让它们 spaced 在所有屏幕宽度的栏中均匀分布,我该怎么做?有没有优雅的解决方案?

此示例显示第一个选项卡 selected。如果我 select 第二个选项卡,我希望 Tab2 为红色,Tab1 为黑色。这只是文本,但如果我必须创建一个图像来完成它,我会的。

这个问题 与 S.O 上的许多问题不重复。指的是在同一个应用程序中同时显示 UITabBarControllerUINavigationController。这是不同的,因为我不想要一个 UITabBarController(我已经有一个可以做别的事情了——但我不想让我的问题过于复杂)——我只想在 [= 里面模仿这种行为13=]。请不要告诉我我不应该这样做。这只是 "I don't feel like helping you figure this out."

的另一种说法

我尝试寻找干净、简单、优雅的解决方案。我还没有找到任何。一个完整的例子将不胜感激。谢谢=)

我想出了一个对我来说效果很好的解决方案。我创建了一个带有 2 个按钮的自定义标签和一个高度为 1 的视图作为分隔符。我将 UITableView 向下移动以将其顶部固定到 UIView 如果您想要超过 2 个按钮,您可以轻松添加更多按钮。

  1. viewDidLoad方法中:self.navigationController.navigationBarHidden = YES;

  2. viewDidAppear方法中:[self.navigationController setNavigationBarHidden:YES animated:YES];

  3. 创建自定义 UILabel,将前导、顶部和尾部固定到 superView,并设置所需的高度约束。

  4. 创建一个高度限制为 1 的自定义 UIView(作为自定义导航栏和 UITableView 之间的视觉分隔符),将后缘和前缘固定到superView,并将 UIView 的底部 space 固定到自定义 UILabel 的底部 space。为分隔符设置所需的颜色。

  5. 创建两个 UIButton,将它们拖到标签中,并设置这些约束:

    -将 UIButton 中心 Y 固定到 UILabel

    的中心 Y

    -pin Button1 的尾部到 Button2 的前缘彼此 和超级视图的水平中心

    -将 Button 1 的前导和 Button2 的尾部固定到 superView

    -将 UITableView 的顶部固定到 UILabel

  6. 的底部
  7. UIButton 颜色设置为在选择时更改,并像设置任何 UIButton

  8. 一样设置它们的目标

添加任何遗漏的约束以防我忘记提及一些。

这是它的样子: