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

Kun*_*ani 13 iphone xcode ipad ios mfmailcomposeviewcontroller

我这里有一个非常奇怪的问题.我正在使用一个现有的模态视图控制器在ViewController上显示我的MFMailComposer ViewController,它放在导航栏中.

[self presentModalViewController:emailviewController animated:YES];

隐藏,我用...

-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{

    [self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但当我解散我的MailComposer时,原始视图控制器隐藏在状态栏后面.

我试图使用setFrame方法将视图偏移量修改为10,但它没有用.(这在模态视图控制器出现和解除之前和之后都很累)

我试过暂时隐藏状态栏但没有工作.

我已经尝试过self.navigationcontroller presentmodalviewcontrolle但是这个也没有用...

任何想法或建议将受到高度赞赏

在dismissmodalviewcontroller之后调用

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

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

改变偏移会导致这种情况

Wol*_*ink 3

尝试将其放入 ViewDidAppear 中:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
Run Code Online (Sandbox Code Playgroud)

最坏的情况,如果它总是在模态视图控制器被关闭后发生,请在 .h 中为 afterFirstLaunch 声明一个布尔值并将其放入 viewDidAppear 中:

if(afterFirstLaunch){
      CGRect frame = self.navigationController.view.frame;
      frame.origin.y = 20;
      self.navigationController.view.frame = frame;
}
else {
      afterFirstLaunch = true;
 }
Run Code Online (Sandbox Code Playgroud)