flo*_*uni 5 uiimagepickercontroller autorotate ios uistatusbar
tl; dr:如果应用程序显示状态栏,则在拍照时旋转iPad时用户界面布局会中断.
我有一个应用程序,显示一个状态栏,应该拍摄照片UIImagePickerController.
我在带有Xcode 4.51的iPad 3,iOS 6上运行它
我注意到的第一个问题是,如果我没有通过隐藏状态栏
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)
在致电之前
[self presentViewController:imagePicker animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
然后UIImagePickerController将无法在屏幕上正确显示.状态栏的空间仍将被保留(但没有显示时间或电池信息等),结果是屏幕下端的控件将部分偏离屏幕.
所以,我添加了这条线
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)
在提出之前UIImagePickerController,第一个问题就解决了.
现在出现了第二个问题(由第一个问题的解决方案引起).当我提出的UIImagePickerController,旋转iPad和关闭(通过"取消"或"使用",无所谓),该处理器(无论是imagePickerControllerDidCancel或 imagePickerController:didFinishPickingMediaWithInfo:将被调用,在我再次显示状态栏,通过
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)
问题是现在状态栏显示,但应用程序的其余部分似乎不知道它再次出现在屏幕上.(我在"MainViewController"上的UIToolbar部分隐藏在状态栏后面.)有趣的是,如果我将iPad旋转到任何其他方向,则在动画结束后再次正确显示.
谁能给我任何关于如何解决这个问题的提示?(目前我最好的工作是在第一次有人拍照后隐藏状态栏,但那是次优的).也许对第一个问题有更好的解决方案,或者可能是解决这两个问题的方法.
更多信息:在UIImagePickerController激活时将iPad旋转到横向,这是我的MainViewController视图框架的框架:{{0,0},{1024,768}}(即在出现问题的情况下).当我一直以横向方向放置iPad时,这是UIImagePickerController被取消后的MainViewController的视图框架:{{0,0},{1024,748}}(这是没有问题的情况.)
提前感谢您的关注和努力!
当我在 iPhone 上显示从相机拍摄图像的图像选择器时,我刚刚遇到了同样的问题。我找到的解决方案是,当弹出图像选择器的视图重新出现时,调用以显示状态栏。例如。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3464 次 |
| 最近记录: |