我是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
做到这一点的好方法。