我一直在使用下面的代码来缩放 UIImagePickerController 的实时预览以填充整个屏幕。到目前为止,这一切都很完美。几天前,我在 iPhone 5 上安装了 iOS 10 beta 7,但它不再扩展了。我可以在 UIImagePickerController 视图的底部看到黑色补丁。似乎cameraViewTransform
正在忽略CGAffineTransformMakeScale
and CGAffineTransformMakeTranslation
calls.
这就是我启动相机控制器的方式。我已将“allowsEditing”和“showsCameraControls”设置为“NO”,以便提供我自己的自定义叠加视图。
objImagePickerController =[[UIImagePickerController alloc] init];
objImagePickerController.delegate = self;
objImagePickerController.sourceType =UIImagePickerControllerSourceTypeCamera;
objImagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
objImagePickerController.allowsEditing = NO;
objImagePickerController.showsCameraControls= NO;
这就是我用来缩放相机实时预览的方法。
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
float screenHeight= MAX(screenSize.height, screenSize.width);
float screenWidth= MIN(screenSize.height, screenSize.width);
float cameraAspectRatio = 4.0 / 3.0;
float imageWidth = floorf(screenWidth * cameraAspectRatio);
float scale = ceilf((screenHeight / imageWidth) * 10.0) / 10.0;
objImagePickerController.cameraViewTransform= CGAffineTransformMakeScale(scale, scale);
这就是我如何将相机视图添加为子视图而不是传统的模态呈现方法,以满足我自己的要求。
[[[UIApplication sharedApplication] keyWindow]addSubview:objImagePickerController.view];
运行 iOS 10 beta 8 的 iPhone 5s 屏幕截图
运行 iOS 8.2 的 iPhone 5s 的屏幕截图
从上面的截图可以看出,cameraViewTransform
不尊重CGAffineTransformMakeScale
在 iOS 10 测试版中。
还有其他人遇到过这个问题吗?这是 iOS 10 beta 操作系统中出现的一个非常奇怪的行为。我无法找到解决方法。请指教。
注意:: objImagePickerController 是 UIImagePickerController 的一个实例。