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



tl; dr; 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并将其关闭(通过"取消"或"使用",没关系),处理程序(imagePickerControllerDidCancelimagePickerController:didFinishPickingMediaWithInfo:被调用,在其中再次显示状态栏,通过

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

问题现在是状态栏实际上显示了,但是该应用的其余部分似乎并不知道它再次在屏幕上。(我在" MainViewController"上拥有的UIToolbar部分隐藏在状态栏后面。)有趣的是,如果我将iPad旋转到其他任何方向后,则在动画完成后再次正确显示所有其他方向。

>

有人可以给我任何解决这个问题的提示吗?(目前,我最好的工作是在第一次拍照后将状态栏隐藏起来,但这是最佳的)。也许可以更好地解决第一个问题,或者是解决这两个问题的方法。

更多信息:在UIImagePickerController处于活动状态时将iPad旋转到景观之后,这是我的MainViewController的视图框架的框架:{{0,0,0},{1024,768}}(即在有问题的情况下)。当我一直在景观方向上iPad时,这是UIImagePickerController被驳回之后的MainViewController的视图框架:{{{0,0,0},{1024,748}}}(没有问题的情况。)<)

事先感谢您的关注和努力!

我在显示从相机中获取图像的图像拾取器时刚刚在iPhone上遇到了同一问题。我发现的解决方案是打电话以显示现状栏时,当弹出图像拾取器的视图将重新出现时。例如

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

最新更新