我有一个问题,这是由状态栏隐藏然后重新出现引起的 - 这样做会将导航栏的位置从显示在状态栏下方更改为显示在其后面。即导航栏的顶部不再可见,因为状态栏在它的顶部。
我的程序是这样构建的,我有一个显示状态栏和导航栏的根 View Controller , View Controller 包含在导航 Controller 中,即
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.myTableViewController];
self.window.rootViewController = navController;
View Controller 包含一个表 View ,如果用户选择一行,则会创建另一个 Controller 并将其推送到导航 Controller 的堆栈。
这个新的 View Controller 隐藏状态栏并隐藏导航栏,除非用户点击屏幕,在这种情况下导航栏出现(并且它也是半透明的,它不在父 View Controller 中)。
我的问题是,当用户从这个 View Controller 导航回表 View Controller 时,导航栏现在显示在状态栏后面。
我在表 View 的 viewWillAppear: 中有以下代码,我认为应该将所有内容重置为原来的样子。
- (void)viewWillAppearBOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden: NO withAnimation: UIStatusBarAnimationFade];
self.navigationController.navigationBar.translucent = NO;
[self.navigationController setNavigationBarHidden:NO animated:YES];
为什么重新出现表格 View 时导航栏会出现在状态栏后面?
谢谢
Best Answer-推荐答案 strong>
我相信状态栏大约有 20 像素高,所以将导航栏的 origin.y 设置为 20,它应该修复它。我知道这很烦人,但根据我的经验,这似乎是解决它的唯一方法。
当您的应用程序退出后台状态时,还要检查导航栏的位置,我知道我的导航栏在进入前台时会立即恢复到状态栏下方。
关于ios - 如果我隐藏状态栏,然后让它重新出现,那么导航栏的位置就会向上移动,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/9068223/
|