【发布时间】: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 并关闭它(通过“取消”或“使用”,没关系),处理程序(imagePickerControllerDidCancel 或 imagePickerController: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