解雇UIImagePickerController后屏幕大小错误

时间:2015-09-08 10:31:22

标签: ios objective-c uiimagepickercontroller

我有一个像WhatsApp& ... 当我使用UIImagePickerController来源类型提交UIImagePickerControllerSourceTypeCamera时。

imagePicker = [UIImagePickerController new];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.delegate = self;
imagePicker.mediaTypes =[NSArray arrayWithObjects:(NSString *)kUTTypeMovie,(NSString *)kUTTypeImage,nil];
[self presentViewController:imagePicker animated:YES completion:nil];

问题

UIImagePickerController模式下取消或完成捕获Video后的某些时候,当我回到我的viewController(关闭相机)时,我的输入视图(我的Windows)以20像素(状态栏高度)到达底部),我认为我的问题与此链接How to position view below green bar during phone call?有关,因为在视频片段中,录制状态栏会显示片刻。 在某些情况下我的Windows(以前控制器中的UITabbar与底部相同)!!!

enter image description here

修改

解决方案仅适用于当前视图,但另一个View控制器损坏(转到底部)

3 个答案:

答案 0 :(得分:3)

最后是Fiexed

特别感谢danialzahid94。

修复此问题,您应该致电

[self dismissViewControllerAnimated:YES completion:^{
        self.view.frame = [[UIScreen mainScreen]bounds];
        [self.view layoutIfNeeded];
        self.tabBarController.view.frame  = [[UIScreen mainScreen]bounds];
        [self.tabBarController.view layoutIfNeeded]; // for fixing  tabbar Controller 

    }];

in 2 Delegate:

  

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)选取器    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

答案 1 :(得分:1)

如果您使用自动布局,则可以在self.view.layoutIfNeeded()解散时尝试UIImagePickerController。如果这不起作用,您可以获取屏幕大小并将其分配给self.view.frame,如下所示:

self.view.frame = UIScreen.mainScreen().bounds

这通常适合我。

答案 2 :(得分:0)

当我在更新框架后应用@Mohamad解决方案时,我点击了textView,它在键盘上方显示空白的黑色区域,当我从控制器返回时,Tabbar向下移动,所以我实现了下面的代码是永久解决方案

<p>