I have an iOS app like whatsapp & ...
when I present UIImagePickerController
with UIImagePickerControllerSourceTypeCamera
source type.
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];
Problem
Some times after cancel or finish capturing UIImagePickerController
in Video
mode , when I back to my viewController (dismiss camera ) my input View (my Windows) going to bottom with 20 pixel ( status bar height ), I think my problem relate to this link How to position view below green bar during phone call? , because in video segment a recording status bar show for a few moment.
In some condition my Windows (UITabbar in previous controller going to bottom as same ) !!!
Edit
the solution works only in current View but another View controller corrupt ( going to bottom )
Finally it's Fiexed
special thanks to danialzahid94.
for Fix this issue , you should call
[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 *)picker - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
If you are using auto layout, you could try self.view.layoutIfNeeded()
when the UIImagePickerController
dismisses. If that doesn't work, you can get the screen size and assign it to your self.view.frame
like this:
self.view.frame = UIScreen.mainScreen().bounds
This usually works for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With