2010-08-29 2 views
0

J'ai un tabBarController avec 4 vues. Je voulais que le second point de vue de tourner, donc j'ai ajoutéRedimensionnement de la vue indésirable en raison de l'UITabBarController

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    return YES; 
    } 

à tous mes 4 viewControllers. Maintenant, chaque vue peut tourner, et c'est bien.

La deuxième vue fonctionne très bien en rotation, elle gère très bien le redimensionnement et le redessin de son contenu. (pour l'instant les autres vues tournent mais ne mettent pas à jour leur contenu, je vais y travailler)

Le problème est que, si je reste dans la première vue, tourner le téléphone, puis passer à la deuxième vue, tout le contenu est redimensionné d'une manière étrange. Par exemple, j'ai un scrollView sur la deuxième vue, couvrant tout l'écran. Lorsque je fais tourner le téléphone tout en restant dans la deuxième vue, il redimensionne le scrollview pour s'adapter à l'écran paysage, tout va bien. Mais si je tourne le téléphone restant dans la première vue (ou dans la troisième ou la quatrième), la vue de défilement devient petite, moins de la moitié de l'écran.

Pour redimensionner et redessiner le contenu j'utilise:

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 
    [self adjustViewsForOrientation:toInterfaceOrientation]; } 

    - (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation { 
    if (orientation == UIInterfaceOrientationLandscapeLeft || 
    orientation == UIInterfaceOrientationLandscapeRight) { 

    sfondo.frame = CGRectMake(0, 0, 480, 260); 
    scrollView.frame = CGRectMake(0, 0, 480, 250); 
    scrollView.contentSize = CGSizeMake(480,1000); 
    for (int i=0; i<3; i++) { 
    [[grafici objectAtIndex:i] landscapeMode:TRUE]; 
    } 
} 
    else if (orientation == UIInterfaceOrientationPortrait || 
    orientation == UIInterfaceOrientationPortraitUpsideDown) { 

    sfondo.frame = CGRectMake(0, 0, 320, 411); 
    scrollView.frame = CGRectMake(0, 0, 320, 411); 
    scrollView.contentSize = CGSizeMake(320,1100); 
    for (int i=0; i<3; i++) { 
    [[grafici objectAtIndex:i] landscapeMode:FALSE]; 
    }  
} 
} 

Répondre

0

J'ai découvert que les questions soulevaient du fait que j'avais mis mon scrollview et d'autres choses de Interface Builder.

Ce faisant, j'ai résolu mon problème par programmation!

Questions connexes