OStack程序员社区-中国程序员成长平台

标题: ios - 如果我隐藏状态栏,然后让它重新出现,那么导航栏的位置就会向上移动 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 11:09
标题: ios - 如果我隐藏状态栏,然后让它重新出现,那么导航栏的位置就会向上移动

我有一个问题,这是由状态栏隐藏然后重新出现引起的 - 这样做会将导航栏的位置从显示在状态栏下方更改为显示在其后面。即导航栏的顶部不再可见,因为状态栏在它的顶部。

我的程序是这样构建的,我有一个显示状态栏和导航栏的根 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-推荐答案


我相信状态栏大约有 20 像素高,所以将导航栏的 origin.y 设置为 20,它应该修复它。我知道这很烦人,但根据我的经验,这似乎是解决它的唯一方法。

当您的应用程序退出后台状态时,还要检查导航栏的位置,我知道我的导航栏在进入前台时会立即恢复到状态栏下方。

关于ios - 如果我隐藏状态栏,然后让它重新出现,那么导航栏的位置就会向上移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9068223/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4