如何将UIImage选择器摄像机方向更改为横向?

时间:2014-03-07 11:25:12

标签: ios iphone ios5 ios6 ios7

我是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 {

    }

}

}

当我以纵向模式打开相机然后切换到其他方向时,此方法适用于我。但是当我以横向模式打开相机时,一切都搞砸了。 我知道我在这里使用了静态值,但我没有其他选择。

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

提前致谢!!!

1 个答案:

答案 0 :(得分:1)