我是IOS的新手,我正在演示项目中,我应该打开UIImagepicker拾取照片,然后用Camera捕捉所有方向的新照片。 我知道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 {

    }

}

}

当我以人像模式打开相机,然后更改为其他方向时,此方法对我来说效果很好。但是,当我以横向模式打开相机时,所有事情都弄糟了。
我知道我在这里使用了静态值,但是我别无选择。

有没有人有任何建议或替代选择。我将非常感谢他/她。

提前致谢 !!!

最佳答案

这些答案可以帮助您:

iPhone UIImagePicker Camera in Landscape Orientation

要么

iOS UIImagePickerController result image orientation after upload

做到这一点的好方法。

09-06 11:40