2010-12-01 5 views
2

J'ai une vue qui contient du champ de texte. Je mets l'orientation vue comme celui-citraduction après rotation vue en utilisant CGAffine

(void)deviceRotated:(id)sender 
{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice]orientation]; 

    if (orientation == UIDeviceOrientationPortrait) 
    { 
     CGAffineTransform affine = CGAffineTransformMakeRotation (0.0); 
     [self.View setTransform:affine]; 
    } 

    if (orientation == UIDeviceOrientationPortraitUpsideDown) 
    { 
     CGAffineTransform affine = CGAffineTransformMakeRotation (M_PI * 180/180.0f); 
     [self.View setTransform:affine]; 
    } 
    else if (orientation == UIDeviceOrientationLandscapeLeft) 
    { 
     CGAffineTransform affine = CGAffineTransformMakeRotation (M_PI * 90/180.0f); 
     [self.View setTransform:affine]; 
    } 
    else if (orientation == UIDeviceOrientationLandscapeRight) 
    { 
     CGAffineTransform affine = CGAffineTransformMakeRotation (M_PI * 270/180.0f); 
     [self.View setTransform:affine]; 
    } 
} 

mon problème est que je veux faire ce point de vue déplacer vers le haut lorsque le clavier apparaît, parce que certains champs de texte sont cachés par le clavier. Je pense que je dois utiliser CGAffineTransformMakeTranslation, mais je ne sais pas comment l'utiliser après cette rotation.

Quelqu'un peut-il m'aider à résoudre ce problème?

Répondre

7

nous pouvons utiliser CGAffineTransformConcat. Voici le code que j'ai fait pour résoudre ce problème

CGAffineTransform rotate = CGAffineTransformMakeRotation (0.0); 
CGAffineTransform translate = CGAffineTransformMakeTranslation(-5, -150); 
self.alertView.transform = CGAffineTransformConcat(translate, rotate); 

mais je comprends toujours pas pourquoi la traduction en orientation portrait & & orientation portrait à l'envers doivent utiliser différents points x et y. Il est arrivé aussi dans le paysage gauche & & orientation paysage droit

0

Voici comment tourner à droite

CGAffineTransform translate = CGAffineTransformMakeRotation(M_PI/18); 
view.transform = CGAffineTransformConcat(view.transform, translate); 

La, tournez à gauche:

CGAffineTransform translate = CGAffineTransformMakeRotation(-M_PI/18); 
view.transform = CGAffineTransformConcat(view.transform, translate); 
+0

merci ..... Clayton –

Questions connexes