我的图像选择器视图控制器在弹出控制器中设置。在iOS 6上,一切都运行良好,但在iOS 7上,图像被旋转,所有移动都在做:当转动iPad时,左图像向下移动,向左移动图像等等。
以下是显示我的相机的代码:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
objPopView = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[objPopView presentPopoverFromRect:CGRectMake(842, 163, 0, 0)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionRight
animated:YES];
我的应用仅使用横向模式,现在图像已旋转:
答案 0 :(得分:17)
正如Apple's Official Doc所说:
显示用户界面。在iPhone或iPod touch上,通过调用当前活动视图控制器的 presentViewController:animated:方法,以模式方式(全屏)执行此操作,将配置的图像选取控制器作为新视图控制器传递。
在 iPad 上,呈现图像选择器的正确方法取决于其源类型,如下表所示:
- 相机照片:全屏使用
- 已保存的库:必须使用popover
- 相册:必须使用popover
...
在iPad上,如果指定源类型为UIImagePickerControllerSourceTypeCamera,则可以模态(全屏)或使用弹出窗口显示图像选择器。但是, Apple建议您仅以全屏方式显示相机界面。
虽然它说“你可以模态地(全屏)或使用popover”呈现图像选择器,正如你所看到的那样使用一个弹出窗口会导致这个奇怪的问题。我想这可能是iOS 7 SDK上的一个错误。
我仍在努力解决这个问题,但就目前而言,我唯一可以判断的方法是通过
模式显示-presentViewController:animated:completion:
方法,全屏显示(实际上,我不喜欢这种方式)。
在Apple的Dev Forums上有一个THREAD讨论过它,你可以看看它。 ;)
答案 1 :(得分:6)
尝试以下方法:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
CGFloat scaleFactor=1.3f;
switch ([UIApplication sharedApplication].statusBarOrientation) {
case UIInterfaceOrientationLandscapeLeft:
imagePicker.cameraViewTransform = CGAffineTransformScale(CGAffineTransformMakeRotation(M_PI * 90 / 180.0), scaleFactor, scaleFactor);
break;
case UIInterfaceOrientationLandscapeRight:
imagePicker.cameraViewTransform = CGAffineTransformScale(CGAffineTransformMakeRotation(M_PI * -90 / 180.0), scaleFactor, scaleFactor);
break;
case UIInterfaceOrientationPortraitUpsideDown:
imagePicker.cameraViewTransform = CGAffineTransformMakeRotation(M_PI * 180 / 180.0);
break;
default:
break;
}
objPopView = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[objPopView presentPopoverFromRect:CGRectMake(842, 163, 0, 0)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionRight
animated:YES];
答案 2 :(得分:0)
在iOS7中正常使用的唯一方法是使用
-presentViewController:动画:完成:
您可以尝试通过cameraViewTransform属性更改摄像机视图转换,但结果会很难看。将视图添加到自定义ViewController(旋转到横向)也会给你带来丑陋的结果。我开始讨厌这个操作系统版本。