【问题标题】:Statusbar and layout issues with UIImagePickerController after rotation旋转后 UIImagePickerController 的状态栏和布局问题
【发布时间】:2012-10-24 17:17:35
【问题描述】:

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 的视图框架的框架:{{0, 0}, {1024, 768}}(即在有问题)。当我一直让iPad处于横向时,这是UIImagePickerController被解除后MainViewController的视图框架:{{0, 0}, {1024, 748}}(这是没有问题的情况。 )

提前感谢您的关注和努力!

【问题讨论】:

    标签: ios uiimagepickercontroller autorotate uistatusbar


    【解决方案1】:

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

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
    
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
    }
    

    【讨论】:

    • 谢谢,这已经是解决方案的一部分。现在,在我离开图像选择器后,该应用程序看起来正确。但是现在出现了一个新问题:当我之后旋转设备时,状态栏会跳到正确的位置(顶部),但我的应用程序的其余部分没有旋转并保持横向......你也解决了这个问题吗?跨度>
    • 我的应用只是纵向的,所以我没有遇到这个问题。如果您找到解决方案,请将其发回此处供其他人查看。
    猜你喜欢
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多