0

将我的项目升级到 iOS7 后,我的视图显示在状态栏下。后来我通过将以下代码添加到 DashBoardViewController(根导航控制器)viewdidAppear 来解决此问题

float systemVersion=[[[UIDevice currentDevice] systemVersion] floatValue];
if(systemVersion>=7.0f)
{
    CGRect tmpFrame = self.navigationController.view.frame;
    tmpFrame.origin.y = 20;
    self.navigationController.view.frame = tmpFrame;
}

但是在我的 SettingsViewController 中,当我呈现模式视图以显示短信编写器时,在编写完成或再次取消状态栏下的视图之后。但是当回到 DashBoardViewController 视图恢复正常。我不知道该怎么办。我希望我能解释这个问题。我的代码和屏幕截图如下。

- >屏幕截图: 在此处输入图像描述

SettingViewController.m(显示 SMS 撰写和完成撰写方法)

- (IBAction)act_shareSMS:(id)sender {
    
    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
    NSString* message = @"adasdasd";
    controller.body =message;
    controller.messageComposeDelegate = self;
    
    if([NavigationManager sharedManager].contentNavigation)
        [[NavigationManager sharedManager].contentNavigation presentModalViewController:controller animated:YES];
}

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {

    [[NavigationManager sharedManager].contentNavigation dismissModalViewControllerAnimated:YES];

    if (result == MessageComposeResultCancelled) {
        NSLog(@"Message cancelled");
    } 
    else if (result == MessageComposeResultSent) {
       NSLog(@"Message sent");
    }
}
4

2 回答 2

0

此更改是对 iOS 7 的预期更改,这应该可以帮助您处理它http://www.doubleencore.com/2013/09/developers-guide-to-the-ios-7-status-bar/

尝试在 viewcontrollers 子视图上使用 iOS 6/7 delta 来自动修复此问题

在此处输入图像描述

将 delta Y 设置为 20,它应该会自动为您向下移动

于 2014-01-11T15:53:59.823 回答
0

如果您支持您的 io7 应用程序,那么我会要求您阅读此页面并使用“edgesForExtendedLayout”的概念。这样你就不需要多放 20px 了。只需在 if 下使用“edgesForExtendedLayout”。

只要看看这个例子,你就可以开始了。不要在 viewDidAppear 中放置任何内容,而是将其移至 viewDidLoad。

希望这可以帮助。

于 2014-01-11T18:24:03.393 回答