我有一个照片应用程序,它覆盖了相机图像选择器上的自定义按钮(用于拍照、打开/关闭闪光灯、其他常用的东西等)
我希望控制界面只支持纵向(我说的是控制按钮/界面,而不是实际捕获的图像),直到 iOS 6 都可以正常工作。
但是,在升级到 xCode 5.0 版并将我的 iPad 3 升级到 iOS 7(GM Seed,适用于 iPad WiFi 3rd Generation)后,我发现相机选择器界面在方向改变时会自动旋转。令人惊讶的是,我在 iPhone 5(升级到 iOS 7)上测试了相同的版本,但自动旋转问题并没有表现出来。
[再次确定,我在 iOS 6 中再次测试了相同的代码,并且在 iPhone 或 iPad 中都没有发生自动旋转]。
只是为了演示我如何处理我的图像选择器,这里有一些代码片段:
UIImagePickerController *pickercustom = [[UIImagePickerController alloc] init];
pickercustom.sourceType = UIImagePickerControllerSourceTypeCamera;
pickercustom.showsCameraControls = NO;
pickercustom.wantsFullScreenLayout = YES;
pickercustom.navigationBarHidden=YES;
pickercustom.view.userInteractionEnabled=YES;
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
if (IPAD.userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
pickercustom.delegate = self;
UIDevice *currentDevice = [UIDevice currentDevice];
while ([currentDevice isGeneratingDeviceOrientationNotifications])
[currentDevice endGeneratingDeviceOrientationNotifications];
[self presentViewController:pickercustom animated:YES completion:nil];
while ([currentDevice isGeneratingDeviceOrientationNotifications])
[currentDevice endGeneratingDeviceOrientationNotifications];
}
else
{
pickercustom.delegate = self;
[self presentViewController:pickercustom animated:YES completion:nil];
}
}
添加了“endGeneratingDeviceOrientationNotifications”以阻止界面旋转(迄今为止工作正常)。
读完后我还尝试添加这三种方法:iOS 6 中的 UIImagePickerController 无法正常工作
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
...但这也许是 iOS 6 特定的解决方案。在我的情况下它不起作用。
如果您能找出根本原因,请告诉我。这将是很大的帮助。