由于項(xiàng)目中使用FDFullscreenPopGesture框架,實(shí)現(xiàn)滑動(dòng)返回功能。
在需要隱藏導(dǎo)航欄的控制器viewWillAppear方法中使用下面代碼隱藏導(dǎo)航欄會(huì)出現(xiàn)問(wèn)題
[self.navigationController setNavigationBarHidden:YES animated:NO];
從有NavigationBar到無(wú)NavigationBar,手勢(shì)返回的時(shí)候,有NavigationBar的控制器導(dǎo)航欄會(huì)變成白色,或者消失不見(jiàn)了;
于是加上動(dòng)畫(huà)效果,問(wèn)題解決,但頁(yè)面會(huì)有明顯上移的動(dòng)畫(huà)
[self.navigationController setNavigationBarHidden:YES animated:YES];
解決辦法:使用FDFullscreenPopGesture框架的fd_interactivePopDisabled屬性設(shè)置,隱藏導(dǎo)航欄
- (void)viewDidLoad
{
[super viewDidLoad];
self.fd_prefersNavigationBarHidden = NO;
}
并且如果是控制器作為導(dǎo)航控制器的根控制器,需要在viewWillAppear:和viewWillDisappear:方法里面添加對(duì)是否隱藏NavigationBar的判斷;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(CGFLOAT_MIN * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
UIViewController *vc = [self.navigationController.viewControllers lastObject];
if (vc.fd_prefersNavigationBarHidden) {
[self.navigationController setNavigationBarHidden:YES animated:NO];
} else {
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
});
這樣可以實(shí)現(xiàn)無(wú)NavigationBar控制器沒(méi)有上移動(dòng)畫(huà),并且從有NavigationBar到無(wú)NavigationBar正常滑動(dòng)返回的功能。