2010-01-11 2 views
7

J'ai un petit problème que je n'ai pas pu résoudre. J'espère vraiment que quelqu'un pourra m'aider avec ça. Je voulais redimensionner la vue de la caméra en direct et le placer dans le centre, en utilisant le code ci-dessous:Mise à l'échelle de l'affichage de la caméra iPhone au centre, "CGAffineTransformTranslate" ne fonctionne pas

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

Mais tout ce que j'ai été une vue mis à l'échelle 1/2 taille en haut à gauche de l'écran. Il semble que "CGAffineTransformTranslate" ne fasse rien du tout. La traduction n'a pas fonctionné même lorsque j'ai utilisé:

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

La partie de traduction semble n'avoir aucun effet sur la vue de caméra en direct. J'espère que quelqu'un peut m'éclairer.

Merci.

+0

Je vois le même comportement. –

+0

Moi aussi. Je ne connais pas la solution. – Eonil

+0

Cela semble être corrigé dans iOS plus récent. Je ne suis pas sûr quand ils l'ont patché. – sffc

Répondre

1

Je me suis cogné la tête contre le même problème. J'ai confirmé que la mise à l'échelle et la rotation de l'aperçu fonctionnent, mais les traductions semblent être ignorées. Je spéculerais que les parties tx, ty de CGAffineTransform sont ignorées lorsque la transformation est définie. C'est avec iPhone OS v3.1.2. Je n'ai pas d'autres versions de système d'exploitation à tester pour le moment.

-1

J'ai obtenu une solution. Il doit être réglé sur un message:

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

Exemple de code:

#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

Vous pouvez certainement _try_ ajouter la traduction, mais elle sera ignorée, comme dans la question d'origine. – macserv

5

J'étais dans le même bateau. Ce que j'ai fait était de déplacer physiquement le cadre du sélecteur.

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