J'ai une application avec de nombreuses vues. Je souhaite que seules quelques vues puissent pivoter vers le mode paysage lorsque l'appareil est pivoté. J'ai découvert que je ne pouvais pas utiliser (BOOL)shouldAutorotateToInterfaceOrientation
car cela ferait pivoter toutes les vues de mon application. J'ai trouvé une solution à ce problème ici sur Stack Overflow mais maintenant j'ai un autre problème à régler.Redimensionner la vue sur l'iPhone lors de la rotation
La vue pivote lorsque j'allume l'appareil, mais elle affiche toujours la vue comme si elle était toujours en mode portrait (verticalement). Le haut et le bas de la vue sont coupés. Est-il possible de faire pivoter la vue et d'ajuster sa taille pour l'adapter à la nouvelle orientation? J'ai également trouvé this mais je n'ai pas réussi à le faire fonctionner.
Voici mon code pour ce point de vue:
@implementation businessBank
@synthesize webView, activityIndicator;
- (void)viewDidLoad {
[super viewDidLoad];
NSString *urlAddress = @"website_url";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
}
- (void)didRotate:(NSNotification *)notification {
UIDeviceOrientation orientation = [[notification object] orientation];
if (orientation == UIDeviceOrientationLandscapeLeft) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI/2.0)];
} else if (orientation == UIDeviceOrientationLandscapeRight) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI/-2.0)];
} else if (orientation == UIDeviceOrientationPortraitUpsideDown) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI)];
} else if (orientation == UIDeviceOrientationPortrait) {
[self.view setTransform:CGAffineTransformMakeRotation(0.0)];
}
}
L'application montre à l'utilisateur un tas de boutons qui vont séparer les vues. Chaque bouton ouvre une vue qui contient UIWebView. On dirait une application assez simple qui serait facile à faire tourner la page Web, mais cela prend plus de temps que prévu. Je veux essentiellement ce que Safari fait sur un couple de vues. J'ai regardé l'exemple de l'horloge avant, mais cela utilise le code de shouldAutorotateToInterfaceOrientation qui fait tourner chaque vue pas seulement celles que je veux. Création de vues séparées pour les portraits et les paysages comme si cela pouvait fonctionner mais ne réinitialiserait-il pas le site Web actuellement utilisé par l'utilisateur? –
Vous devriez pouvoir conserver l'état d'une manière ou d'une autre, soit avec une variable stockant quelle page web est vue ou en créant dynamiquement UIWebView (au lieu du concepteur visuel) et en l'ajoutant à vos vues si nécessaire (lors de la rotation) . –
Les webviews sont des liens vers une page où l'utilisateur peut se connecter et regarder leur compte bancaire. Info. Même si je stocke le site Web sur lequel ils se trouvent, il sera probablement déconnecté de nouveau (ou parce que l'information est fournie dynamiquement pas sur des pages Web distinctes), il n'apparaîtra pas où ils étaient auparavant. J'ai juste juste besoin d'un moyen de faire tourner le webview vers le paysage exactement comme le ferait shouldAutorotateToInterfaceOriention ... mais pas sur chaque vue. Des trucs frustrants. –