How to prevent a modal UIImagePickerController fro

2019-03-19 06:18发布

I have an app that fully support rotation. I am modally adding a UIImagePickerController for which there is no support for UIInterfaceOrientationLandscape and I cannot get the controller to stay in portrait.

In other words, I need to disable rotation for the UIImagePickerController so it stays in portrait, without removing rotation for the rest of my app. this seems basic, but I can't seem to locate it. How can I prevent this rotation?



UPDATE

As suggested, I tried subclassing with the following code:

@interface UAImagePickerController : UIImagePickerController {
}
@end

@implementation UAImagePickerController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return UIDeviceOrientationIsPortrait(toInterfaceOrientation);
}
@end

The line is not being hit at all with a breakpoint… i think there must be something funky about the UIImagePickerView

4条回答
Juvenile、少年°
2楼-- · 2019-03-19 06:57

Subclass UIImagePickerController and have that new class implement shouldAutorotateToInterfaceOrientation: to make it rotate to portrait only, something like this:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
查看更多
Melony?
3楼-- · 2019-03-19 06:58

I created my UIImagePickerController inside a UIViewController with the respective shouldAutorotateToInterfaceOrientation method implemented and presented it like this

[self.view addSubview:myImagePicker.view];
[targetVC.navigationController presentModalViewController:self animated:YES];

Hope that helps.

查看更多
一夜七次
4楼-- · 2019-03-19 07:12

Just drop this in above your ViewControllers @implementation block (in the .m file)

@implementation UIImagePickerController (portrait)

- (BOOL)_isSupportedInterfaceOrientation:(UIDeviceOrientation)orientation
{
    return UIDeviceOrientationIsPortrait(orientation);
}

@end
查看更多
疯言疯语
5楼-- · 2019-03-19 07:24

You should override _isSupportedInterfaceOrientation:, and not the shouldAutorotateToInterfaceOrientation:

iPad 2 UIImagePickerController camera auto-rotation driving me mad!

查看更多
登录 后发表回答