ios - 旋转后 UIImagePickerController 的状态栏和布局问题

标签 ios uiimagepickercontroller autorotate uistatusbar

tl;dr:如果应用显示状态栏,则在拍照时旋转 iPad 会破坏用户界面布局。

我有一个显示状态栏的应用程序,它应该通过 UIImagePickerController 拍照。

我在 iPad 3、iOS 6 和 Xcode 4.51 上运行这个

我注意到的第一个问题是,如果我没有通过

隐藏状态栏
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

调用之前

[self presentViewController:imagePicker animated:YES completion:nil];

然后 UIImagePickerController 将无法在屏幕上正确显示。状态栏的空间仍将保留(但不显示时间或电池信息等),结果屏幕下端的控件将部分离开屏幕。

所以,我添加了这一行

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

在呈现 UIImagePickerController 之前,第一个问题已解决。

现在是第二个问题(由第一个问题的解决方案引起)。当我调出 UIImagePickerController、旋转 iPad 并关闭它(通过“取消”或“使用”,无关紧要)时,处理程序(imagePickerControllerDidCancelimagePickerController:didFinishPickingMediaWithInfo: 被调用,我再次显示状态栏,通过

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

现在的问题是状态栏实际上显示了,但应用程序的其余部分似乎没有意识到它再次出现在屏幕上。 (我的“MainViewController”上的 UIToolbar 部分隐藏在状态栏后面。)有趣的是,如果我将 iPad 旋转到任何其他方向,动画结束后所有内容都会再次正确显示。

任何人都可以给我任何解决此问题的提示吗? (目前我最好的解决办法是在有人第一次拍照后隐藏状态栏,但这是次优的)。也许第一个问题有更好的解决方案,或者可能有解决这两个问题的方法。

更多信息:在 UIImagePickerController 处于事件状态时将 iPad 旋转到横向后,这是我的 MainViewController View 框架的框架:{{0, 0}, {1024, 768}}(即在出现问题的情况)。当我一直将 iPad 横向放置时,这是在 UIImagePickerController 被关闭后 MainViewController 的 View 框架:{{0, 0}, {1024, 748}}(这是这种情况没有问题。)

在此先感谢您的关注和努力!

最佳答案

我刚刚在 iPhone 上显示从相机拍摄图像的图像选择器时遇到了同样的问题。我找到的解决方案是在弹出图像选择器的 View 将重新出现时调用以显示状态栏。例如。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
}

关于ios - 旋转后 UIImagePickerController 的状态栏和布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13054338/

相关文章:

ios - Xcode Storyboard用蓝色遮盖了 uitabbarcontroller 元素

ios - 使用 RATreeView 的 tableView endUpdates 崩溃

ios - 返回组合字典的字典扩展

ios - didFinishPickingMediaWithInfo 未调用

ios - NSException : "Terminating app due to uncaught exception ' UIApplicationInvalidInterfaceOrientation', 原因 :. ..”

android - 如何在小部件中收听 Intent.ACTION_CONFIGURATION_CHANGED 广播?

ios - UITabBar 自动旋转问题

ios - NSUserActivity 切换不适用于自定义数据

ios - 如何以编程方式计算 UIImagePickerController 工具栏的高度?

iphone - 应用程序在图像捕获时崩溃