Я использовал ниже код для масштабирования моего предварительного просмотра UIImagePickerController для заполнения всего экрана. До сих пор это отлично работало. До нескольких дней я установил iOS 10 beta 7 на iPhone 5, и он больше не масштабируется. Я вижу черный патч внизу представления UIImagePickerController. Кажется, что cameraViewTransform
игнорирует вызовы CGAffineTransformMakeScale
и CGAffineTransformMakeTranslation
.
Вот как я запускаю контроллер камеры. Я установил "allowEditing" и "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];
снимок экрана с iPhone 5s, запущенного на iOS 10 beta 8
снимок экрана с iPhone 5s, работающий на iOS 8.2
Как видно из приведенных выше скриншотов, cameraViewTransform
не соблюдает CGAffineTransformMakeScale
в iOS 10 beta.
Кто-нибудь еще сталкивался с этой проблемой? Это действительно странное поведение, появившееся в бета-версии iOS 10. Я не могу найти обходное решение для этого. Пожалуйста, порекомендуйте.
ПРИМЕЧАНИЕ:: objImagePickerController - это экземпляр UIImagePickerController.