Сборщик изображений ios 7 внутри ошибочного поведения
Мой контроллер представления изображений, установленный внутри контроллера popover. На iOS 6 все работает отлично, но на iOS 7 изображение вращается, и все перемещения делают стихи: при повороте левого изображения iPad снижается, когда движутся изображения, идущие влево, и т.д.
Вот код для показа моей камеры:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
objPopView = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[objPopView presentPopoverFromRect:CGRectMake(842, 163, 0, 0)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionRight
animated:YES];
Мое приложение использует только ландшафтный режим, теперь изображение поворачивается:
![enter image description here]()
Ответы
Ответ 1
Как официальный Официальный документ Apple сказал:
Представьте пользовательский интерфейс. На iPhone или iPod touch сделайте это модально (полноэкранный), вызвав метод presentViewController: анимированный: завершение: текущего активного контроллера представления, передав ваш сконфигурированный контроллер выбора изображений в качестве нового контроллера представления.
В iPad правильный способ представления подборщика изображений зависит от его типа источника, как указано в этой таблице:
- Фото камеры: используйте полный экран
- Библиотека сохранена: необходимо использовать popover
- Фотографий Альбом: Должен использовать popover
...
На iPad, если вы укажете тип источника UIImagePickerControllerSourceTypeCamera, вы можете представить средство выбора изображений по умолчанию (полноэкранный) или с помощью popover. Однако Apple рекомендует представить интерфейс камеры только полноэкранным.
Несмотря на то, что он сказал: "Вы можете представить сборщик изображений по-разному (полноэкранный) или с помощью popover", как вы видите, используя popover, приведет к этой странной проблеме. Я думаю, это может быть ошибкой в iOS 7 SDK.
Я все еще пытаюсь исправить эту проблему, но пока, единственный способ, который я могу сказать, это показать ее модально
-presentViewController:animated:completion:
который находится в полноэкранном режиме (на самом деле мне это не нравится).
И там THREAD обсуждали это на форумах Apple Dev, вы можете взглянуть на него.;)
Ответ 2
Попробуйте следующее:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
CGFloat scaleFactor=1.3f;
switch ([UIApplication sharedApplication].statusBarOrientation) {
case UIInterfaceOrientationLandscapeLeft:
imagePicker.cameraViewTransform = CGAffineTransformScale(CGAffineTransformMakeRotation(M_PI * 90 / 180.0), scaleFactor, scaleFactor);
break;
case UIInterfaceOrientationLandscapeRight:
imagePicker.cameraViewTransform = CGAffineTransformScale(CGAffineTransformMakeRotation(M_PI * -90 / 180.0), scaleFactor, scaleFactor);
break;
case UIInterfaceOrientationPortraitUpsideDown:
imagePicker.cameraViewTransform = CGAffineTransformMakeRotation(M_PI * 180 / 180.0);
break;
default:
break;
}
objPopView = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[objPopView presentPopoverFromRect:CGRectMake(842, 163, 0, 0)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionRight
animated:YES];
кредит fooobar.com/questions/210077/...
Ответ 3
Единственный способ, который правильно работает в iOS7, заключается в использовании
-presentViewController: анимированные: завершение:
Вы можете попытаться изменить преобразование камеры с помощью свойства cameraViewTransform, но результат будет уродливым. Добавление представления в пользовательский ViewController (который вращается в альбомный) также даст вам уродливые результаты. Я начинаю ненавидеть эту версию os.