closuresUIImagePickerController后错误的屏幕尺寸

当我用UIImagePickerControllerSourceTypeCamera源types呈现UIImagePickerController时,我有一个类似whatsapp的iOS应用程序。

 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]; 

问题

Video模式取消或完成捕获UIImagePickerController一些时候,当我回到我的viewController(closures相机)我的input查看(我的Windows)20像素(状态栏高度)底部,我认为我的问题涉及到这个链接如何打电话时在绿色栏下方放置视图? ,因为在video片段中录制状态栏显示一会儿。 在某些情况下,我的Windows(UITabbar在前面的控制器底部一样)!

在这里输入图像说明

编辑

该解决scheme只适用于当前视图,但另一个视图控制器损坏(进入底部)

最后它是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 }]; 

在2名代表:

– (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker – (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

如果您使用自动布局,则可以在UIImagePickerControllerclosures时尝试使用self.view.layoutIfNeeded() 。 如果这不起作用,您可以获得屏幕大小,并将其分配给您的self.view.frame像这样:

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

这通常适用于我。

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

 @property CGRect viewFrame; @property CGRect tabbarFrame; - (void)viewWillAppear:(BOOL)animated { if (CGRectIsEmpty(self.viewFrame)) { self.viewFrame=self.view.frame; self.tabbarFrame=self.tabBarController.view.frame; } } - (void)viewDidAppear:(BOOL)animated { [self correctScreenSize]; } -(void)correctScreenSize { self.view.frame = self.viewFrame; [self.view layoutIfNeeded]; self.tabBarController.view.frame = self.tabbarFrame; [self.tabBarController.view layoutIfNeeded]; }