Question

Comment puis-je faire pivoter manuellement une vue à l'aide de autoresizingMasks, comme si l'utilisateur avait fait pivoter le téléphone et que celui-ci était pivoté automatiquement. Aussi, je veux que ce soit instantané, pas d'animation. Si vous souhaitez savoir pourquoi j'en ai besoin, consultez mon autre question à l'adresse sur iPhone - rotation de l'interface .

Merci !!

Était-ce utile?

La solution

Ce que vous voulez faire, c’est utiliser des transformations Affine pour faire pivoter votre vue. C’est ce que j’ai accompli, même si je n’ai pas le code en face de moi pour le moment. Si vous effectuez une simple rotation, vous constaterez que votre vue sera coupée et non au centre comme vous le souhaitez, ce que vous devez faire ici est de définir l’ancre de votre calque (jouez avec la valeur jusqu’à ce que vous obteniez ce que vous voulez). afin que la vue apparaisse où vous le souhaitez. La façon de procéder consiste simplement à effectuer une rotation de transformation affine à 90 degrés et à visualiser ses effets sur la vue. De cette façon, vous devriez être capable de comprendre où vos couches d'ancrage doivent être. Ill poster quelques exemples de code ici plus tard, quand je suis en face de mon mac. J'espère que ça aide

Autres conseils

Je ne comprends pas très bien ce que vous entendez par

  

"... en utilisant les outils de dimensionnement automatique ..."

J'ai fait la même chose avec l'animation UIIView. Il existe également de nombreuses autres techniques. voici mon code:

-(void)rotateToLandscape
{
UIWindow *win = [[UIApplication sharedApplication]keyWindow];
if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){
    [[[UIApplication sharedApplication] keyWindow] setBackgroundColor:[UIColor blackColor]];
    [UIView beginAnimations:@"View Flip" context:nil];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    win.transform = CGAffineTransformIdentity;
    win.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
    win.bounds = CGRectMake(0.0f, 0.0f, 480, 320);
    win.center = CGPointMake(160.0f, 240.0f);
    [UIView commitAnimations];
}   

}

// J'espère que le code n'a pas besoin d'explication.
// Vous pouvez supprimer les instructions d'animation pour obtenir l'effet souhaité (non animé).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top