在iOS7的UINavigationBar下添加视图的最好方法是什么?

在ios7上,很多应用程序(Apple Messages,Facebook Messenger,Calendar)都在UINavigationBar下面出现了一些视图,通常是标准animation。 因为它看起来很标准,看起来很多与UIToolBar,我正在寻找实现它的标准方式,但找不到任何东西。

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

苹果消息

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

  • 像这样添加一个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]; 
  • 在顶部的导航项上添加一个菜单button

     self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Menu" style:UIBarButtonItemStyleBordered target:self action:@selector(toggleMenu:)]; 
  • 现在实现toggleMenufunction。 添加一个BOOLvariables来跟踪移动。

     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 。

希望有所帮助。