我一直在使用下面的代码来缩放 UIImagePickerController 的实时预览以填满整个屏幕。到目前为止,这工作得很好。几天前,我在 iPhone 5 上安装了 iOS 10 beta 7,但它不再扩展。我可以在 UIImagePickerController 的视图底部看到黑色补丁。似乎cameraViewTransform
忽略了CGAffineTransformMakeScale
andCGAffineTransformMakeTranslation
电话。
这就是我启动相机控制器的方式。我已将“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 的屏幕截图
从上面的屏幕截图中可以看出,iOS 10 测试版中的cameraViewTransform
不尊重CGAffineTransformMakeScale
。
还有其他人遇到过这个问题吗?这是 iOS 10 beta OS 中出现的一种非常奇怪的行为。我无法找到解决方法。请指教。
注意:: objImagePickerController 是 UIImagePickerController 的一个实例。