首页 文章

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

提问于
浏览
13

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

[self presentModalViewController:emailviewController animated:YES];

隐藏,我用...

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

    [self dismissModalViewControllerAnimated:YES];
}

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

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

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

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

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

After dismissmodalviewcontroller called

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

  • (void)viewDidAppear:(BOOL)animated

Changing offset results in this

1 回答

  • 3

    试着把它放在ViewDidAppear中:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
    

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

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

相关问题