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并关闭它(通过“取消”或“使用”,无关紧要),处理程序(调用imagePickerControllerDidCancel
或imagePickerController:didFinishPickingMediaWithInfo:
,在此状态栏中我再次通过
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
现在的问题是状态栏,其实是在表示,但应用程序的其他部分似乎是不知道它是在屏幕上一次。(我对我的“MainViewController”的UIToolbar是部分隐藏在状态栏后面)有趣的是,如果我将iPad旋转到任何其他方向,则在动画完成后所有动画都会正确显示。
有没有人可以给我提示如何解决是问题吗? (目前我最好的解决方法是在第一次有人拍张照片后隐藏状态栏,但那是次优的)。也许第一个问题有更好的解决方案,或者是解决这两个问题的方法。
更多信息:在将iPad旋转到风景的同时,UIImagePickerController
处于活动状态,这是我的MainViewController视图框架的框架:{{0,0},{1024,768}}(即在存在问题)。当我一直拥有横向的iPad时,这是UIImagePickerController
被解雇后MainViewController的视图框架:{{0,0},{1024,748}}(这是没有问题的情况。)
在此先感谢您的关注和努力!
谢谢,这已经是解决方案的一部分。现在,我离开图像选择器后,该应用程序看起来正确。但现在有一个新问题:当我旋转设备后状态栏跳转到正确的位置(顶部),但我的应用程序的其余部分不旋转,并保持侧身...您是否也解决了这个问题? –
我的应用程序只是肖像,所以我没有遇到这个问题。如果您找到解决方案,但将其发回给他人看。 – Firefly
根本没有工作 – user2159978