J'ai une UIImageView comme image de fond pour mon application, qui, comme un hélicoptère en détresse, fait un autorotat. Le problème est quand l'orientation autorotate mon image est décalée partout et je ne l'aime pas. Comme il s'agit d'une texture simple, je suppose que l'utilisateur préfèrerait qu'il reste à sa place, et non autorotate. Ce que je veux dire par là, c'est que je voudrais que l'image reste en plein écran, et lorsque l'utilisateur fait pivoter le téléphone, l'image pivote de 90 degrés pour que l'image soit statique avec le téléphone et non le reste de l'application.Comment empêcher l'autorotation de l'image?
Répondre
Vous pouvez essayer d'implémenter la méthode willAnimateRotationToInterfaceOrientation:duration:
dans votre contrôleur de vue et de faire pivoter le UIImageView
dans le sens opposé.
Le code ci-dessous du haut de ma tête, je ne peux pas garantir que cela fonctionnera:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {
CGFloat angle = M_PI/2; // Figure out the proper angle
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:duration];
imageview.transform = CGAffineTransformMakeRotation(angle);
[UIView commitAnimations];
}
cela a-t-il vraiment fonctionné? Je l'essaie ici: http://stackoverflow.com/questions/7073296/ios-strange-behaviour-rotating-uiimageview-inside-uiview et obtenir 100% d'échec –
Je suggère de faire pivoter votre image dans une retouche d'image-logiciel et charger dynamiquement. C'est loin, beaucoup plus facile à faire, que de déconner avec les angles (et aussi le code est plus facile à lire).
Comme ceci:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
myBackground.image = [UIImage imageNamed:@"bg.jpg"];
} else { // landscape view
myBackground.image = [UIImage imageNamed:@"bg_landscape.jpg"];
}
}
Avez-vous obtenu en fait une solution qui a fonctionné? Je ne peux pas ... (voir commentaire sur la réponse acceptée) –