我是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 {
}
}
}
当我以纵向模式打开相机然后切换到其他方向时,此方法适用于我。但是当我以横向模式打开相机时,一切都搞砸了。 我知道我在这里使用了静态值,但我没有其他选择。
有没有人有任何建议或替代选择。我将非常感谢他/她。
提前致谢!!!
答案 0 :(得分:1)