Подтвердить что ты не робот

Сборщик изображений 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

4b9b3361

Ответ 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.