2012-10-24 51 views
5

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

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

我在iPad 3和Xcode运行此,iOS 6的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旋转到任何其他方向,则在动画完成后所有动画都会正确显示。

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

更多信息:在将iPad旋转到风景的同时,UIImagePickerController处于活动状态,这是我的MainViewController视图框架的框架:{{0,0},{1024,768}}(即在存在问题)。当我一直拥有横向的iPad时,这是UIImagePickerController被解雇后MainViewController的视图框架:{{0,0},{1024,748}}(这是没有问题的情况。)

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

回答

3

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

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

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

谢谢,这已经是解决方案的一部分。现在,我离开图像选择器后,该应用程序看起来正确。但现在有一个新问题:当我旋转设备后状态栏跳转到正确的位置(顶部),但我的应用程序的其余部分不旋转,并保持侧身...您是否也解决了这个问题? –

+0

我的应用程序只是肖像,所以我没有遇到这个问题。如果您找到解决方案,但将其发回给他人看。 – Firefly

+0

根本没有工作 – user2159978