2015-09-28 2 views
0

Привет Я использую UIImagePickerController с камерой типа источника. Я удивляюсь, что это не показывает полный режим захвата, как приложение для контактов iOS (снятие профиля с камеры).UIIMagePickerController + Camera + полноэкранный снимок фото

В моем коде показана верхняя и нижняя панель с черным экраном и встроенным дисплеем iOS, отображающим полноэкранный захват для следующего экрана повторного воспроизведения.

Вот мои снимки экрана enter image description here

ответ

0
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 

imagePickerController.delegate = self; 
imagePickerController.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage, nil]; 
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 
imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; 

UIView *controllerView = imagePickerController.view; 

controllerView.alpha = 0.0; 
controllerView.transform = CGAffineTransformMakeScale(0.5, 0.5); 

[[[[UIApplication sharedApplication] delegate] window] addSubview:controllerView]; 

[UIView animateWithDuration:0.3 
       delay:0.0 
      options:UIViewAnimationOptionCurveLinear 
     animations:^{ 
      controllerView.alpha = 1.0; 
     } 
     completion:nil]; 
+0

Не работает, но сжимается камера Я хочу Точное Iphone родное приложение для контакта открыть изображение захвата при редактировании фотографии профиля с камерой – user100

+0

@sanjay, то, что вы здесь делаете, - возможно, очень, но очень неправильно. Вы отрываете представление от своего контроллера представлений, который обрабатывает все его функциональные возможности, что никогда не является хорошим вариантом при разговоре о частных, предоставляемых Apple, классах, подобных этому. В лучшем случае это приведет к недействительному/неработоспособному коду с утечками, в худшем случае, мгновенным сбоем. – michi

0

Я считаю, что это поведение по умолчанию UIImagePickerController (с черными полосами вокруг зоны захвата, по крайней мере, на некоторых устройствах).

Приложение для связи, возможно, просто изменяет его свойство -cameraViewTransform перед представлением, чтобы заполнить весь экран с видом захвата, но этот параметр отличается в зависимости от качества устройства и качества захвата, которое вы собираетесь использовать.

+0

Как я уже сказал, вы можете попробовать обновить свойство '' '-cameraViewTransform''' '' UIImagePickerController''', прежде чем показывать его пользователю, НО его позиция несовместима между Capture и Retake экранами IIRC, поэтому вам нужно будет сделать A) немного более глубокая магия с помощью функции mangling/swizzling capture и т. Д. Или B) использовать совершенно другой сторонний компонент. '' 'UIImagePickerController''' в основном не очень настраиваемый. – michi

+0

Вы правы. После установки CGFloat cameraTransformX = 1; CGFloat cameraTransformY = 1,5; Camerapicker.cameraViewTransform = CGAffineTransformScale (Camerapicker.cameraViewTransform, cameraTransformX, cameraTransformY); Picker показывает полноэкранный режим, но экран Retake все еще остается на дисплее выбора по умолчанию – user100

+0

Да, но помните: • правильное/точное пиксельное значение преобразования отличается для каждого устройства и ориентации • вы должны преобразовать обе оси с одинаковым значением, в противном случае вид захвата будет искажен – michi

Смежные вопросы