Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 隐藏然后重新显示UINavigationBar会导致问题_Objective C_Ios_Cocoa Touch_Uinavigationcontroller - Fatal编程技术网

Objective c 隐藏然后重新显示UINavigationBar会导致问题

Objective c 隐藏然后重新显示UINavigationBar会导致问题,objective-c,ios,cocoa-touch,uinavigationcontroller,Objective C,Ios,Cocoa Touch,Uinavigationcontroller,我正在viewDidLoad中隐藏状态栏和导航栏 - (void)viewDidLoad { [super viewDidLoad]; [self.navigationController setNavigationBarHidden:YES animated:YES]; [[UIApplication sharedApplication] setStatusBarHidden:YES]; } 一切正常。但是,当我关闭视图控制器时,视图中将消失:我执行以下操作

我正在viewDidLoad中隐藏状态栏和导航栏

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.navigationController setNavigationBarHidden:YES animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
一切正常。但是,当我关闭视图控制器时,视图中将消失:我执行以下操作:

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}
这会导致我的所有视图位置不正确:

我做错了什么?
谢谢

我认为,当navigationbar显示时,应用程序状态栏仍然隐藏,因此navigationbar offsetY为0。您应该更改两种调用方法的顺序

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

我还没试过,所以我只是在猜测。 您的导航栏设置了一个框架,就好像没有状态栏一样。有些事情是按错误的顺序做的。
因此,在您的代码中,我看到当导航栏被要求在没有状态栏的情况下可见时

[self.navigationController setNavigationBarHidden:NO animated:YES];    
[[UIApplication sharedApplication] setStatusBarHidden:NO];
你试过把这两条线颠倒过来吗?(我只是猜测)

我的另一个测试是设置在ViewDidDisplay中可见的导航栏。
此时,applicationFrame应该已经更新到状态栏再次可见的事实


我已经对它进行了测试,反转调用可以让它工作。但是您将无法获得导航栏和状态栏的动画。如果您需要它们,我建议您将这些调用放在
视图将出现
视图显示