5

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

我有一个应用程序,它显示一个状态栏,应该通过UIImagePickerController.

我在带有 Xcode 4.51 的 iPad 3、iOS 6 上运行它

我注意到的第一个问题是,如果我没有通过隐藏状态栏

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

在致电之前

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

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

所以,我添加了这一行

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

在提出之前UIImagePickerController,第一个问题已经解决。

现在是第二个问题(由第一个问题的解决方案引起)。当我打开 时UIImagePickerController,旋转 iPad 并关闭它(通过“取消”或“使用”,没关系),处理程序(imagePickerControllerDidCancel或者 imagePickerController:didFinishPickingMediaWithInfo:被调用,在其中我再次显示状态栏,通过

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

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

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

更多信息:在 iPadUIImagePickerController处于活动状态时将其旋转为横向后,这是我的 MainViewController 视图框架的框架:{{0, 0}, {1024, 768}}(即在出现问题的情况下)。当我一直让iPad处于横向时,这UIImagePickerController是关闭后MainViewController的视图框架:{{0, 0}, {1024, 748}}(这是没有问题的情况。)

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

4

1 回答 1

3

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

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

    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
}
于 2012-10-29T07:50:29.357 回答