简体   繁体   English

在iOS7中在UINavigationBar下添加视图的最佳方法是什么

[英]What's the best way to add a view under UINavigationBar in iOS7

On ios7, a lot of apps (Apple Messages, Facebook Messenger, Calendar)have views appearing under the UINavigationBar, often with what seems to be standard animation. 在ios7上,许多应用程序(Apple Messages,Facebook Messenger,Calendar)都会在UINavigationBar下显示视图,通常会显示标准动画。 As it seems quite standard and looks a lot with a UIToolBar, I was looking for the standard way of implementing it but couldn't find anything. 由于看起来非常标准并且使用UIToolBar看起来很多,我一直在寻找实现它的标准方法但却找不到任何东西。

Is there a better way to adding a UIToolBar to the UINavigationBar? 有没有更好的方法将UIToolBar添加到UINavigationBar?

Apple消息

You should follow this simple approach. 你应该遵循这个简单的方法。

  • Add a UIToolBar like this. 像这样添加一个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]; 
  • Add a Menu Button on Top navigation item 在顶部导航项上添加菜单按钮

     self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Menu" style:UIBarButtonItemStyleBordered target:self action:@selector(toggleMenu:)]; 
  • Now Implement toggleMenu function. 现在实现toggleMenu函数。 Add a BOOL variable to track the movement. 添加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; } 
  • Here is the attached video for this. 这是附加的视频

Hope that helps. 希望有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM