默认iOS UINavigationBar动画为';t平滑
我正在开发一个应用程序,需要隐藏UINavigationBar(和工具栏),以便在应用程序浏览器中提供全屏模式 当应用程序运行此代码时,动画工作正常默认iOS UINavigationBar动画为';t平滑,ios,uinavigationcontroller,core-animation,Ios,Uinavigationcontroller,Core Animation,我正在开发一个应用程序,需要隐藏UINavigationBar(和工具栏),以便在应用程序浏览器中提供全屏模式 当应用程序运行此代码时,动画工作正常 [self.navigationController setNavigationBarHidden:YES animated:YES]; [self.navigationController setToolbarHidden:YES animated:YES]; 当我想退出全屏模式时,动画一点也不平滑 [self.navigationContro
[self.navigationController setNavigationBarHidden:YES animated:YES];
[self.navigationController setToolbarHidden:YES animated:YES];
当我想退出全屏模式时,动画一点也不平滑
[self.navigationController setNavigationBarHidden:NO animated:YES];
[self.navigationController setToolbarHidden:NO animated:YES];
在动画过程中,导航栏下会显示一个黑色矩形,我认为是UIWebView自行调整大小(工具栏动画工作正常)
你知道如何解决这个问题吗?不要使用
setNavigationBarHidden:animated:
来隐藏导航栏,试试以下方法:
在视图控制器的viewDidLoad
中,为导航栏和视图计算不同的帧:
// The normal navigation bar frame, i.e. fully visible
normalNavBarFrame = self.navigationController.navigationBar.frame;
// The frame of the hidden navigation bar (moved up by its height)
hiddenNavBarFrame = normalNavBarFrame;
hiddenNavBarFrame.origin.y -= CGRectGetHeight(normalNavBarFrame);
// The frame of your view as specified in the nib file
normalViewFrame = self.view.frame;
// The frame of your view moved up by the height of the navigation bar
// and increased in height by the same amount
fullViewFrame = normalViewFrame;
fullViewFrame.origin.y -= CGRectGetHeight(normalNavBarFrame);
fullViewFrame.size.height += CGRectGetHeight(normalNavBarFrame);
当您想要全屏显示时:
[UIView animateWithDuration:0.3
animations:^{
self.navigationController.navigationBar.frame = hiddenNavBarFrame;
self.view.frame = fullViewFrame;
} completion:^(BOOL finished) {
}];
当您想恢复正常时:
[UIView animateWithDuration:0.3
animations:^{
self.navigationController.navigationBar.frame = normalNavBarFrame;
self.view.frame = normalViewFrame;
} completion:^(BOOL finished) {
}];
在iOS 5.1仿真器中对此进行了测试。希望你能用上。“黑色矩形”必须是窗口的默认背景色,即导航栏和视图之间的间隙 你有没有找到解决这个问题的办法?