在 iOS 7 的导航栏下添加视图的最佳方法是啥

Posted

技术标签:

【中文标题】在 iOS 7 的导航栏下添加视图的最佳方法是啥【英文标题】:What's the best way to add a view under UINavigationBar in iOS7在 iOS 7 的导航栏下添加视图的最佳方法是什么 【发布时间】:2014-01-28 14:16:03 【问题描述】:

ios7 上,许多应用程序(Apple Messages、Facebook Messenger、Calendar)在 UINavigationBar 下显示视图,通常带有似乎是标准动画的内容。由于它看起来很标准并且与 UIToolBar 看起来很多,我一直在寻找实现它的标准方法但找不到任何东西。

有没有更好的方法将 UIToolBar 添加到 UINavigationBar?

【问题讨论】:

为什么不定义自己的自定义 UIView? 它看起来更像是一个简单的视图帧动画... @MrBr 你的意思是而不是 UIToolBar? 如果您使用 UIScrollView,您可以检测到该视图何时位于顶部并相应地显示/隐藏自定义视图(如果您愿意,可以在其中使用 UIToolBar)。 看下面的简单方法。 【参考方案1】:

你应该遵循这个简单的方法。

像这样添加UIToolBar

UIBarButtonItem *flexiableItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:nil];

NSArray *items = [NSArray arrayWithObjects:item1, flexiableItem, item2, nil];
self.toolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, -44, self.view.frame.size.width, 44)];
[self.toolBar setItems:items];
self.toolBar.tintColor = [UIColor whiteColor];
self.toolBar.barTintColor = [UIColor colorWithRed:0.6 green:0.1 blue:0.2 alpha:1];
[self.contentView addSubview:self.toolBar];

在顶部导航项上添加菜单按钮

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Menu" style:UIBarButtonItemStyleBordered target:self action:@selector(toggleMenu:)];

现在实现toggleMenu 函数。添加一个BOOL 变量来跟踪运动。

if(!moved) 
[UIView animateWithDuration:0.5 animations:^
    self.toolBar.alpha = 1;
    self.toolBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
];
moved = YES;
else 
[UIView animateWithDuration:0.5 animations:^
    self.toolBar.alpha = 1;
    self.toolBar.frame = CGRectMake(0, -44, self.view.frame.size.width, 44);
];
moved = NO;

这是附件video。

希望对您有所帮助。

【讨论】:

谢谢,这或多或少是我所做的。我只是想知道我是否遗漏了什么。 @BalramTiwari,兄弟你能帮我看看我的问题***.com/questions/46376475/…吗?

以上是关于在 iOS 7 的导航栏下添加视图的最佳方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

带有透明/模糊导航栏的 iOS 7 视图控制器布局问题

从导航栏下的第二个视图

iOS 7 状态栏透明

UITableView 部分索引在 iOS 7 中定位错误的单元格,顶行隐藏在导航栏下

添加渐变作为视图顶层的最佳方法是啥?

iPhone:在导航栏下隐藏自定义视图