我正在尝试反转我的UIImagePickerController,以便它能够填满iPhone 5的屏幕,显然是倒置的。这是我为UIImagePickerController提供的代码:
- (void)applicationDidBecomeActive
{
UIImagePickerController *imageViewPickerController = [[UIImagePickerController alloc] init];
imageViewPickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
imageViewPickerController.showsCameraControls = NO;
imageViewPickerController.cameraViewTransform = CGAffineTransformMakeRotation(DEGREES_RADIANS(180));
imageViewPickerController.cameraViewTransform = CGAffineTransformMakeTranslation(0.0, 71.0);
imageViewPickerController.cameraViewTransform = CGAffineTransformScale(imageViewPickerController.cameraViewTransform, 1.333333, 1.333333);
[self presentViewController:imageViewPickerController
animated:NO
completion:NULL];
}
如果我运行此代码,我没有得到任何反转。如果我这样修改它:
- (void)applicationDidBecomeActive
{
UIImagePickerController *imageViewPickerController = [[UIImagePickerController alloc] init];
imageViewPickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
imageViewPickerController.showsCameraControls = NO;
imageViewPickerController.cameraViewTransform = CGAffineTransformMakeTranslation(0.0, 71.0);
imageViewPickerController.cameraViewTransform = CGAffineTransformScale(imageViewPickerController.cameraViewTransform, 1.333333, 1.333333);
imageViewPickerController.cameraViewTransform = CGAffineTransformMakeRotation(DEGREES_RADIANS(180));
[self presentViewController:imageViewPickerController
animated:NO
completion:NULL];
}
它反转,但只占用320x320平方的屏幕,无视我的其他转换。如果有人可以提供一些专业知识,如何让它遵循所有这些论点,我会非常感激。
答案 0 :(得分:1)
您应该尝试将您创建的所有转换连接到一个转换中,然后将其设置为cameraViewTransform
,如下所示:
CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, 71.0);
CGAffineTransform scale = CGAffineTransformMakeScale(1.333333, 1.333333);
CGAffineTransform rotate = CGAffineTransformMakeRotation(DEGREES_RADIANS(180));
CGAffineTransform transform = CGAffineTransformConcat(translate, scale);
transform = CGAffineTransformConcat(transform, rotate);
imageViewPickerController.cameraViewTransform = transform;
答案 1 :(得分:1)
以下代码适用于我(适用于ios 6和7)。但请注意我将imagePickerController.view添加为占位符视图的子视图。
CGSize screenSize = [UIScreen mainScreen].bounds.size;
CGFloat cameraAspectRatio = 3.0f / 4.0f;
CGFloat scale = (screenSize.height / screenSize.width) * cameraAspectRatio;
CGFloat yOffset = (screenSize.height - screenSize.width / cameraAspectRatio) / 2.0;
CGAffineTransform translate = CGAffineTransformMakeTranslation(0, yOffset);
CGAffineTransform fullScreen = CGAffineTransformMakeScale(scale, scale);
CGAffineTransform fullTranform = CGAffineTransformConcat(fullScreen, translate);
if(SYSTEM_VERSION_LESS_THAN(@"7.0"))
{
CGRect rect = self.imagePickerController.view.frame;
rect.size.height = screenSize.width / cameraAspectRatio;
rect.size.width = screenSize.width;
imagePickerController.view.frame = rect;
imagePickerController.view.transform = fullTranform;
}
else
{
imagePickerController.view.frame = [UIScreen mainScreen].bounds;
imagePickerController.cameraViewTransform = fullTranform;
}
[self.placeholder addSubview:imagePickerController.view];