Actualicé mi iPhone y SDK a iOS 4.0.1 y ahora mi aplicación no se ejecuta de la misma manera que se estaba ejecutando en iOS 3.x.UIImagePickerController cameraViewTransform actúa de manera diferente en iOS 4
Mi aplicación usa el UIImagePickerController con una cámara personalizadaOverlayView (que suprimiré en esta publicación). El punto principal es que necesito ver la cámara iphone en modo pantalla completa. Para ir directamente al problema, voy a poner un poco de código y capturas de pantalla para explicar lo que está sucediendo.
Creé una aplicación basada en la vista utilizando los proyectos de plantilla XCode llamados "CameraTransform", así que obtuve dos clases: CameraTransformAppDelegate
y CameraTransformViewController
, ¡ok! En viewDidAppear
método de la CameraTransformViewController
's pongo el siguiente código:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
//[self configurePicker_FirstAttempt:picker]; Use this!
//[self configurePicker_SecondAttempt:picker]; Use this too!
[self presentModalViewController:picker animated:YES];
}
- (void)configurePicker_FirstAttempt:(UIImagePickerController*) picker {
picker.showsCameraControls = NO;
picker.navigationBarHidden = YES;
// not needed (use defaults)
//picker.toolbarHidden = YES;
//picker.wantsFullScreenLayout = YES;
}
- (void)configurePicker_SecondAttempt:(UIImagePickerController*) picker {
// Transform values for full screen support
CGFloat cameraTransformX = 1.0;
CGFloat cameraTransformY = 1.12412;
picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform, cameraTransformX, cameraTransformY);
}
Ejecución del proyecto con/i obtuve:
- ambos
configurePicker_FirstAttempt
yconfigurePicker_SecondAttempt
llamadas a métodos comentó: defaultPicker.png. - solo
configurePicker_SecondAttempt
método llamada comentó: configurePicker_FirstAttempt.png. - ambos
configurePicker_FirstAttempt
yconfigurePicker_SecondAttempt
llamadas a métodos sin comentar: configurePicker_SecondAttempt.png.
NOTA:
- En iOS 3.x utilicé el tercer enfoque (ambos métodos sin comentar) para configurar el selector, que era espectáculo en el modo de pantalla completa sin la "barra de negro" en la parte inferior .
- Inspeccioné el valor original
picker.cameraViewTransform
(antes de escalarlo) y se establece en Identidad (como se esperaba). - El
picker.view.frame
se establece en la década de grada de pantalla (0.0, 0.0, 320,0, 480,0) - Traté de concatenar una traducción a la
picker.cameraViewTransform
(después de haber sido escalado), así:CGAffineTransformTranslate(picker.cameraViewTransform, 0.0, 20.0);
y me di cuenta de que había alguna parte de la "vista de cámara" que estaba oculta (tal vez su origen no era el 0.0, 0.0), así que obtuve más "vista de cámara" en la pantalla.
Parece que en el nuevo SDK el UIImagePickerController ha cambiado de alguna manera, tal vez los controles de la cámara tienen diferentes tamaños de algo similar.
¿Alguien ha tenido este problema?
También estoy teniendo el mismo problema y gracias por la punta con escalamiento. Intenté traducir, pero parece que no me afecta. Es realmente extraño lo que está sucediendo aquí. Me quedaré con la escala por ahora. Si alguien tiene una respuesta adecuada a este problema, seguramente lo agradeceríamos. – Buju