Ras*_*ick 11 objective-c uiimagepickercontroller ios ios10 xcode8-beta6
我一直在使用下面的代码来扩展我的UIImagePickerController的实时预览以填充整个屏幕.到目前为止,这完美地运作 在几天之前,我在iPhone 5上安装了iOS 10 beta 7,它不再扩展.我可以在UIImagePickerController的视图底部看到黑色补丁.似乎cameraViewTransform
是在忽略CGAffineTransformMakeScale
和CGAffineTransformMakeTranslation
调用.
这就是我启动相机控制器的方式.我已将"allowsEditing"和"showsCameraControls"都设置为"NO",以便提供我自己的自定义叠加视图.
objImagePickerController =[[UIImagePickerController alloc] init];
objImagePickerController.delegate = self;
objImagePickerController.sourceType =UIImagePickerControllerSourceTypeCamera;
objImagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
objImagePickerController.allowsEditing = NO;
objImagePickerController.showsCameraControls= NO;
Run Code Online (Sandbox Code Playgroud)
这是我用来缩放相机实时预览的内容.
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);
Run Code Online (Sandbox Code Playgroud)
这就是我将摄像机视图添加为子视图而不是传统的模态演示方法的方法,以满足我自己的要求.
[[[UIApplication sharedApplication] keyWindow]addSubview:objImagePickerController.view];
Run Code Online (Sandbox Code Playgroud)
来自iOS 5 beta 8上运行的iPhone 5s的屏幕截图
来自iOS 5上运行的iPhone 5s的屏幕截图
从上面的截图中可以看出,cameraViewTransform
它不符合CGAffineTransformMakeScale
iOS 10测试版.
有没有人面对这个问题?这是iOS 10 beta OS中出现的一种非常奇怪的行为.我无法找到解决方法.请指教.
NOTE :: objImagePickerController是UIImagePickerController的一个实例.
奇怪的是,它只允许我们在演示完成后对其进行转换.
例:
self.presentViewController(
self.imagePicker,
animated: true,
completion: {
let screenSize = UIScreen.mainScreen().bounds.size
let ratio: CGFloat = 4.0 / 3.0
let cameraHeight: CGFloat = screenSize.width * ratio
let scale: CGFloat = screenSize.height / cameraHeight
self.imagePicker.cameraViewTransform = CGAffineTransformMakeTranslation(0, (screenSize.height - cameraHeight) / 2.0)
self.imagePicker.cameraViewTransform = CGAffineTransformScale(self.imagePicker.cameraViewTransform, scale, scale)
}
)
Run Code Online (Sandbox Code Playgroud)
此代码将转换摄像机视图以匹配屏幕大小.
请注意,这是一种解决方法.它有效,但用户会看到它在演示时调整大小.
我之前在 IOS 9.3 中也遇到过同样的问题。这是我使用的代码
//transform values for full screen support
#define CAMERA_TRANSFORM_X 1
#define CAMERA_TRANSFORM_Y 1.12412
if (IS_IPAD)
CGAffineTransformScale(objImagePickerController.cameraViewTransform, CAMERA_TRANSFORM_X, CAMERA_TRANSFORM_Y);
else if (IS_IPHONE_5_Land||IS_IPHONE_4_Land||IS_IPHONE_6_Land||IS_IPHONE_6_PLUS_Land)
{
objImagePickerController.cameraViewTransform = CGAffineTransformScale(CGAffineTransformIdentity, 2, 2);
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
归档时间: |
|
查看次数: |
4015 次 |
最近记录: |