2010-01-11 10 views
7

Tengo un pequeño problema que no pude resolver. Realmente espero que alguien pueda ayudarme con eso. Quería cambiar el tamaño de la vista de cámara en vivo y colocarlo en el centro, usando el siguiente código a continuación:Escalada en vivo Vista de la cámara del iPhone en el centro, "CGAffineTransformTranslate" no funciona

picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform, 0.5, 0.56206); 
    picker.cameraViewTransform = CGAffineTransformTranslate(picker.cameraViewTransform, 80, 120); 

Pero todo lo que tengo un escalado medio vista de tamaño en la parte superior izquierda de la pantalla. Parece que "CGAffineTransformTranslate" no hace nada en absoluto. La traducción no funcionó incluso cuando utilicé:

 picker.cameraViewTransform = CGAffineTransformMake(1, 0, 0, 1, 80, 120); 

La parte de la traducción parece no tener ningún efecto en la vista de la cámara en vivo. Espero que alguien pueda iluminarme.

Gracias.

+0

Estoy viendo el mismo comportamiento. –

+0

Yo también. No sé la solución. – Eonil

+0

Esto parece estar arreglado en el iOS más nuevo. No estoy seguro de cuándo lo arreglaron. – sffc

Respuesta

1

He estado golpeando mi cabeza contra el mismo problema. He confirmado que la escala y la rotación de la vista previa funciona, pero parece que se ignoran las traducciones. Me gustaría especular que las porciones tx, ty de CGAffineTransform se ignoran cuando se configura la transformación. Esto es con iPhone OS v3.1.2. No tengo otras versiones del sistema operativo para probar en este momento.

-1

Tengo la solución. Se debe configurar el mensaje:

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 

Código de ejemplo:

#pragma mark - 
#pragma mark UINavigationControllerDelegate 
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    CGFloat width = [[self view] bounds].size.width; 
    CGFloat height = width/4*3; 
    CGSize sizeOfCamera = CGSizeMake(width, height); 
    CGAffineTransform t = CGAffineTransformMakeScale(0.5, 0.5); 
    [picker setCameraViewTransform:t]; 

    // Now the image is automatically aligned to center. 
    // Translation matrix also can be applied, but didn't use because it's already aligned to center. 
} 
+2

Definitivamente puede _escribir_ la traducción, pero se ignorará, al igual que en la pregunta original. – macserv

5

yo estaba en el mismo barco. Lo que hice fue mover físicamente el marco del selector.

[picker.view setFrame:CGRectMake(xOffset,yOffset,picker.view.frame.size.width,picker.view.frame.size.height)]; 
Cuestiones relacionadas