当您进入由搜索显示控制器处理的搜索栏时,它会向上滑动视图并将导航栏向上推。这很容易做到,但是,当您单击搜索结果并将新视图推送到导航控制器的堆栈时,导航栏会从右侧滑入视图!
这是怎么做到的?如果您只是将导航栏设置为隐藏或显示,它会立即发生。我无法弄清楚它似乎只是为堆栈中的一个视图控制器隐藏了!
非常感谢,
迈克尔
当您进入由搜索显示控制器处理的搜索栏时,它会向上滑动视图并将导航栏向上推。这很容易做到,但是,当您单击搜索结果并将新视图推送到导航控制器的堆栈时,导航栏会从右侧滑入视图!
这是怎么做到的?如果您只是将导航栏设置为隐藏或显示,它会立即发生。我无法弄清楚它似乎只是为堆栈中的一个视图控制器隐藏了!
非常感谢,
迈克尔
您可以为导航栏的过渡设置动画。有关-setNavigationBarHidden:animated:
更多详细信息,请参阅。
如果您需要基于每个视图控制器执行此操作,只需覆盖视图控制器的-viewDidAppear:
和-viewWillDisappear:
方法,例如:
- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
当视图控制器被推到导航堆栈顶部时,上面将隐藏导航栏,并在视图控制器弹出时显示导航栏。
您可以随时调用-setNavigationBarHidden:animated:
,但这两种方法对于应用大量 UI 更改很有用。
-(void)viewDidLayoutSubviews{
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
它不会隐藏导航栏。