Ios 如何将UIImage picker相机方向更改为横向?

Ios 如何将UIImage picker相机方向更改为横向?,ios,iphone,ios5,ios6,ios7,Ios,Iphone,Ios5,Ios6,Ios7,我是IOS的新手。我正在做一个演示项目,在这个项目中,我应该打开UIImagepicker,从各个方向挑选照片和相机来拍摄新的照片我知道UIImagepicker只支持纵向,但我为UIImagepicker创建了一个类别类,在该类别中,我重写了方向方法以支持方向 问题是我的UIImagePicker在所有方向上都能完全打开,但当我切换到任何横向模式时,相机会旋转90度,并进入半屏幕 所以为了解决这个问题,我添加了一个观察者,当方向改变时,它会发出通知 [[UIDevice currentDevi

我是IOS的新手。我正在做一个演示项目,在这个项目中,我应该打开UIImagepicker,从各个方向挑选照片和相机来拍摄新的照片我知道UIImagepicker只支持纵向,但我为UIImagepicker创建了一个类别类,在该类别中,我重写了方向方法以支持方向

问题是我的UIImagePicker在所有方向上都能完全打开,但当我切换到任何横向模式时,相机会旋转90度,并进入半屏幕

所以为了解决这个问题,我添加了一个观察者,当方向改变时,它会发出通知

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
调用的方法是

- (void) orientationChanged
  { 
    if (self.imagePickerController.sourceType==UIImagePickerControllerSourceTypeCamera)
    {

    @try {

             if (orientation == UIInterfaceOrientationLandscapeLeft)
            {
                transform=CGAffineTransformRotate(transform,LANDSCAPE_NEGATIVE_ANGLE * M_PI / LANDSCAPE_ANGLE);
                transform=CGAffineTransformTranslate(transform, -75, -80);
                [self.imagePickerController setCameraViewTransform:transform];

            }
            else if (orientation == UIInterfaceOrientationLandscapeRight)
            {
                transform=CGAffineTransformRotate(transform,LANDSCAPE_NEGATIVE_ANGLE * M_PI / LANDSCAPE_ANGLE);
                transform=CGAffineTransformTranslate(transform, 75, 80);
                [self.imagePickerController setCameraViewTransform:transform];

            }
            else
            {
                //        CGAffineTransform tmpTransform=PORTRAIT_Transform;
                transform=CGAffineTransformRotate(transform,LANDSCAPE_NEGATIVE_ANGLE * M_PI / 90);
                transform=CGAffineTransformTranslate(transform, 0, 0);
                [self.imagePickerController setCameraViewTransform:transform];

            }
    }
    @catch (NSException *exception)
    {
        NSLog(@"Exception occured, Details :%@",exception);
    }
    @finally {

    }

}
}

当我在纵向模式下打开相机,然后切换到其他方向时,这种方法对我来说很好。但当我以横向模式打开相机时,一切都乱七八糟。 我知道我在这里使用了静态值,但我没有其他选择

有人有什么建议或选择吗。我会非常感谢他/她


提前感谢

这些答案可以帮助您:


很好的解决方法。

我很感谢你的回答,第一个链接说技术上不可能……我知道,而另一个答案说的是UIImage,而不是UIImgePicker相机!!!Thanx for Concers从相机拍摄的图像非常完美。但问题是相机重叠视图被弄乱了!!!