dismissModalViewController隐藏状态栏后面的父视图

我在这里有一个很奇怪的问题。 我正在使用一个现有的模式视图控制器来显示我的MFMailComposer ViewController顶部的一个ViewController放置在一个导航栏。

[self presentModalViewController:emailviewController animated:YES];

隐藏,我用…

 -(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { [self dismissModalViewControllerAnimated:YES]; } 

一切工作正常,但是当我解雇我的MailComposer原始视图控制器隐藏在状态栏后面。

我试图修改视图偏移10使用setFrame方法,但它没有奏效。 (在模态视图控制器被呈现和解除之前和之后,这是累了的)

我试图通过暂时隐藏状态栏,但没有奏效。

我曾尝试self.navigationcontroller presentmodalviewcontrolle,但没有工作太…

任何想法或build议将不胜感激

在dismissmodalviewcontroller调用之后

编辑:大多数人给我一个build议,手动修改偏移量。 那么这是行不通的。 因为如果我在viewDidLoad / viewWillapper中执行原始视图控制器方法,那么它会在当前的模式视图控制器之前移动我的视图,而在我加载模态视图控制器之后,它将变为正常。

  • (void)viewDidAppear:(BOOL)animated {CGRect frame = self.navigationController.view.frame; frame.origin.y = 20; self.navigationController.view.frame = frame; }

在此更改偏移量结果

尝试把这个在ViewDidAppear:

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 

最糟糕的情况是,如果总是只在模式视图控制器closures之后才发生,则在.h中声明afterFirstLaunch的布尔值,并将其放在viewDidAppear中:

 if(afterFirstLaunch){ CGRect frame = self.navigationController.view.frame; frame.origin.y = 20; self.navigationController.view.frame = frame; } else { afterFirstLaunch = true; }