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 上的许多问题不重复。指的是在同一个应用程序中同时显示 UITabBarController
和 UINavigationController
。这是不同的,因为我不想要一个 UITabBarController
(我已经有一个可以做别的事情了——但我不想让我的问题过于复杂)——我只想在 [= 里面模仿这种行为13=]。请不要告诉我我不应该这样做。这只是 "I don't feel like helping you figure this out."
的另一种说法
我尝试寻找干净、简单、优雅的解决方案。我还没有找到任何。一个完整的例子将不胜感激。谢谢=)
我想出了一个对我来说效果很好的解决方案。我创建了一个带有 2 个按钮的自定义标签和一个高度为 1 的视图作为分隔符。我将 UITableView
向下移动以将其顶部固定到 UIView
如果您想要超过 2 个按钮,您可以轻松添加更多按钮。
在viewDidLoad
方法中:self.navigationController.navigationBarHidden = YES;
在viewDidAppear
方法中:[self.navigationController setNavigationBarHidden:YES animated:YES];
创建自定义 UILabel
,将前导、顶部和尾部固定到 superView,并设置所需的高度约束。
创建一个高度限制为 1 的自定义 UIView
(作为自定义导航栏和 UITableView
之间的视觉分隔符),将后缘和前缘固定到superView,并将 UIView
的底部 space 固定到自定义 UILabel
的底部 space。为分隔符设置所需的颜色。
创建两个 UIButton
,将它们拖到标签中,并设置这些约束:
-将 UIButton
中心 Y 固定到 UILabel
的中心 Y
-pin Button1 的尾部到 Button2 的前缘彼此 和超级视图的水平中心
-将 Button 1 的前导和 Button2 的尾部固定到 superView
-将 UITableView
的顶部固定到 UILabel
的底部
将 UIButton
颜色设置为在选择时更改,并像设置任何 UIButton
一样设置它们的目标
添加任何遗漏的约束以防我忘记提及一些。
这是它的样子:
在 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 上的许多问题不重复。指的是在同一个应用程序中同时显示 UITabBarController
和 UINavigationController
。这是不同的,因为我不想要一个 UITabBarController
(我已经有一个可以做别的事情了——但我不想让我的问题过于复杂)——我只想在 [= 里面模仿这种行为13=]。请不要告诉我我不应该这样做。这只是 "I don't feel like helping you figure this out."
我尝试寻找干净、简单、优雅的解决方案。我还没有找到任何。一个完整的例子将不胜感激。谢谢=)
我想出了一个对我来说效果很好的解决方案。我创建了一个带有 2 个按钮的自定义标签和一个高度为 1 的视图作为分隔符。我将 UITableView
向下移动以将其顶部固定到 UIView
如果您想要超过 2 个按钮,您可以轻松添加更多按钮。
在
viewDidLoad
方法中:self.navigationController.navigationBarHidden = YES;
在
viewDidAppear
方法中:[self.navigationController setNavigationBarHidden:YES animated:YES];
创建自定义
UILabel
,将前导、顶部和尾部固定到 superView,并设置所需的高度约束。创建一个高度限制为 1 的自定义
UIView
(作为自定义导航栏和UITableView
之间的视觉分隔符),将后缘和前缘固定到superView,并将UIView
的底部 space 固定到自定义UILabel
的底部 space。为分隔符设置所需的颜色。创建两个
UIButton
,将它们拖到标签中,并设置这些约束:-将
的中心 YUIButton
中心 Y 固定到 UILabel-pin Button1 的尾部到 Button2 的前缘彼此 和超级视图的水平中心
-将 Button 1 的前导和 Button2 的尾部固定到 superView
-将
UITableView
的顶部固定到UILabel
的底部
将
UIButton
颜色设置为在选择时更改,并像设置任何UIButton
一样设置它们的目标
添加任何遗漏的约束以防我忘记提及一些。
这是它的样子: