1

对于 iOS 7,我遇到了状态栏问题。为此,我通过在 Appdelegate 中使用以下代码解决了它

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleLightContent];
    self.window.clipsToBounds =YES;
    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
    self.window.bounds = CGRectMake(0,0, self.window.frame.size.width, self.window.frame.size.height);
}

一切正常。

只是拍照时出现问题。

当我打开相机或照片库时,我仍然看到状态栏,因此我看到一半的导航标题,如下所示。

在此处输入图像描述

知道如何克服这个错误吗?

问题是:

  1. 照片库/相机如上图所示

  2. 如果我单击取消,我的视图会自动向上移动 20 像素。

4

3 回答 3

5

代替:

self.window 

用这个:

[[self view] window]

试试这样:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleLightContent];
    self.view.window.clipsToBounds =YES;
    self.view.window.frame =  CGRectMake(0,20,self.view.window.frame.size.width,self.view.window.frame.size.height-20);
    self.view.window.bounds = CGRectMake(0,0, self.view.window.frame.size.width, self.view.window.frame.size.height);
}
于 2013-10-22T12:00:59.360 回答
1

我猜你正在使用 UINavigationController。如果您使用的是 UINavigationController,则与框架无关,也与状态栏无关。请首选以下代码来设置 UINavigationController 以及设置状态栏。否则,您可以显示代码,将帮助您解决此问题。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[ExViewController alloc] initWithNibName:@"ExViewController" bundle:nil];
    self.window.rootViewController = self.viewController;

    self.mainViewNavigation = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    self.window.rootViewController = mainViewNavigation;


    [self.window addSubview:self.mainViewNavigation.view];
    [self.window makeKeyAndVisible];
    return YES;
}
于 2013-10-23T04:55:37.017 回答
0

我的一个项目遇到了这个问题。我们甚至没有很多课程的xib。所以我所能做的就是在委托函数中再次重置框架。

   [self.navigationController dismissViewControllerAnimated:YES
                                              completion:^{
                                                  [self.navigationController.view setFrame:CGRectMake(self.navigationController.view.frame.origin.x, [UIApplication sharedApplication].statusBarFrame.size.height, self.navigationController.view.frame.size.width, [[UIScreen mainScreen] bounds].size.height-[UIApplication sharedApplication].statusBarFrame.size.height)];
                                              }];

我把它放在照片/相机纠察队、邮件选择器的完成/取消委托方法中。

于 2013-10-23T05:13:20.880 回答