Question

Je suis en utilisant cette .

J'ai mis cela dans lequel les images sont ajoutées:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

J'ai mis ces Remplacements dans SlideShowViewController:

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

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {


}

La première est appelée, mais pas le second.

Je ne suis pas à l'aide d'une pointe; il utilise une initialisation personnalisée qui renvoie une self.view avec les 3 images sur elle.

Est-ce que je manque quelque chose? Quelle serait la meilleure façon de modifier ce script pour obtenir les photos de paysage étirer à pleine largeur lorsque l'iPhone est mis en rotation par l'utilisateur?

Edit: juste essayé d'ajouter willAnimate ... à la racine View Controller de mon NavigationController, mais ce n'est pas invoqué. Peut-être le NavigationController est le problème? Dans ce cas, où dois-je mettre le willAnimate ...? Sinon, comment puis-je recevoir et transmettre des messages envoyés vers le viewController visible?

Edit 2: Cause de l'erreur dans le sujet était que le TabBarController manquait une connexion à IB (que j'étais sûr qu'il y avait). Alors maintenant, mon problème est le même que pour quelques autres questions similaires - willAnimate ... est appelé VC racine mais pas dans les VCs poussé. Le code que je l'ai utilisé fane dans la galerie VC au lieu de glisser dans, par exemple. ce n'est pas poussé, mais actuellement ajouté en tant que sous-vue à la fenêtre -. pour remplir tout l'écran

Suggestions pour savoir comment un message que le contrôleur de sous-vue de définir les cadres serait apprécié, ou d'autres solutions!

Était-ce utile?

La solution

Ce n'est pas une réponse à pourquoi votre « willAnimateRotation .. » - méthode ne déclenche pas, mais plutôt une alternative à la façon dont la galerie d'images peut s'adapter aux rotations se

.

Dans initWithImages ajouter:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didRotate:)
                                             name:UIDeviceOrientationDidChangeNotification object:nil];

Ajoutez cette méthode pour recevoir la notification. En didRotate vous pouvez gérer le redimensionnement d'un repositionnement des images.

- (void) didRotate:(NSNotification *)notification
{   
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        NSLog(@"Landscape Left!");
    }
}

Ne pas oublier de désenregistrer la notification dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];

Puis-je suggérer que vous utilisez un UIScrollView au lieu de gérer le défilement et les gestes vous?

Autres conseils

est SlideShowViewController poussé directement sur la pile du contrôleur de navigation, ou est-il partie d'un autre point de vue? Les méthodes de délégués UIView se genre de foiré quand on travaille avec des sous-vues sur les vues sur la pile du contrôleur de navigation.

Si SlideShowViewController est juste un sous-vue d'un autre point de vue qui a été poussé sur la pile du contrôleur de navigation, je tente d'écouter cette méthode dans le contrôleur de vue qui est en fait sur la pile du contrôleur de navigation, puis d'appeler la méthode appropriée SlideShowViewController à partir de là.

J'ai eu un problème similaire à obtenir viewWillAppear et méthode similaire appelé dans un contrôleur de navigation.
Je résolus en les appelant manuellement lorsque la méthode est appelée racine.
Je ne sais pas si c'est le même problème avec la rotation, mais vous pouvez essayer de mettre dans votre contrôleur de vue racine

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.navigatioController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

Cette question était un peu difficile de répondre, je suppose, car il était sur ma configuration spécifique de l'application non rudimentaire. Désolé pour laisser le temps de primes à court, il était essentiellement trop tard le même jour j'ai demandé;)

Je pensais que je poste ce « pas enterré dans les commentaires » pour tous ceux qui obtient les mêmes symptômes.

La première est que j'ai remarqué un IBOutlet que je suis sûr que je connecté à un moment donné n'était plus connecté (Tab Bar Controller -> Objet tabBarController). Depuis que je me creusais la cervelle et déplacé des choses autour pour faire ce travail, ce qui a probablement été dû me essayer quelque chose, puis la restauration d'une sauvegarde.

Deuxième partie de la solution était de addSubview la vue galerie à la vue du tabBarController au lieu du naviguée à voir. Ensuite, le shouldAuto du contrôleur de vue racine ... et les méthodes willAuto ont été invoquées.

(Pour masquer la barre d'onglets et la barre de navigation tout en faisant tourner que je devais mettre leur .alpha à 0 tandis que la galerie est affiché, sinon le naviguée à voir était en partie caché sous la barre de navigation lors de revenir. Je ne trouvais pas façon de cacher la barre d'état tout en montrant la galerie.)

Après cela, il y avait une demande d'avoir la galerie dans un détail vue naviguée à partir d'un autre onglet, et je me suis l'erreur délicate que seulement lorsque les détails vue AUTRE (travail) a été montré sous l'autre onglet serait autorotation travail avec la nouvelle galerie. Récupérerez à la solution à cela, le temps quittin.

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