对于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);
}
一切都很完美。
拍摄照片时只会出现问题。
当我打开相机或照片库时,我仍然会看到状态栏,因此我看到了一半导航标题,如下所示。
我知道如何克服这个错误?
问题是:
照片库/相机如上图所示
如果我点击取消,我的视图会自动向上移动20px。
答案 0 :(得分: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);
}
答案 1 :(得分: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;
}
答案 2 :(得分: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)];
}];
我把它放在照片/相机纠察队,邮件选择器的完成/取消委托方法中。