I have been using below code to scale my UIImagePickerController's live preview to fill the entire screen. This worked perfectly till now. Before few days, I installed iOS 10 beta 7 on an iPhone 5 and it doesn't scale anymore. I can see black patch at the bottom of UIImagePickerController's view. Seems like cameraViewTransform
is ignoring the CGAffineTransformMakeScale
and CGAffineTransformMakeTranslation
calls.
This is how I initiate my camera controller. I have set both "allowsEditing" and "showsCameraControls" to 'NO' in order to provide my own custom overlay view.
objImagePickerController =[[UIImagePickerController alloc] init];
objImagePickerController.delegate = self;
objImagePickerController.sourceType =UIImagePickerControllerSourceTypeCamera;
objImagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
objImagePickerController.allowsEditing = NO;
objImagePickerController.showsCameraControls= NO;
This is what I use to scale the camera live preview.
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);
This is how I add the camera view as a subview instead of traditional modal presentation method, to suit my own requirements.
[[[UIApplication sharedApplication] keyWindow]addSubview:objImagePickerController.view];
screenshot from iPhone 5s running on iOS 10 beta 8
screenshot from iPhone 5s running on iOS 8.2
As noticeable from the above screenshots, the cameraViewTransform
doesn't respect the CGAffineTransformMakeScale
in iOS 10 beta.
Did anybody else face this issue? This is a really weird behavior appearing in iOS 10 beta OS. I am unable to find a workaround for this. Please advise.
NOTE:: objImagePickerController is an instance of UIImagePickerController.