2014-07-07 1 views
6

i mis en oeuvre le procédé dans ViewController AUIViewControllerAnimatedTransitioning avec UIStatusBarAnimation

- (BOOL)prefersStatusBarHidden { 
    return NO; 
} 

i mis en oeuvre le procédé dans ViewController B

- (BOOL)prefersStatusBarHidden { 
    return YES; 
} 

- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation { 
    return UIStatusBarAnimationSlide; // when doing hiding animation i want it to slide up 
} 

i implémenté une classe T conforme à la transition viewController dire AtoBTransition, i utilisé ce ViewControllerTransition pour la transition De vc (viewcontroller) A à vc B. when transitioning to vc B i want the status bar to slide up (hide with sliding animation) mais dans ce cas, il semble que cela ne fait pas que l'animation coulissante. Questions: Supposez simplement que je n'ai pas fait le code associé à UIStatusBar dans la classe T, et que je n'ai pas ajouté la valeur View controller-based status bar appearance dans info plist. Et la transition T fonctionne parfaitement au besoin.

  1. Je suis sûr que le code se lit dans -preferredStatusBarUpdateAnimation en faisant point d'arrêt ou l'exploitation forestière, mais pourquoi il n'a pas caché l'animation en faisant glisser la barre d'état? quand je bascule à slowmotion dans le simulateur. il semble qu'il ne fait pas d'animation. Ma théorie est qu'elle est en conflit avec le contexte d'animation de transition, donc est-il possible de faire de l'animation de cacher UIStatusBar dans l'implémentation de T dans le cadre de son schéma de transition?

  2. est-il possible de faire l'animation UIStatusBar avec ViewControllerAnimationTransition?

n'hésitez pas à effacer certaines choses. merci à l'avance .. :)

+0

Votre transition de contrôleur de vue personnalisée (de A à B) fonctionne-t-elle correctement? – Aaron

+0

Oui monsieur. cela fonctionne correctement – matadorx12

+0

Êtes-vous capable d'obtenir la barre d'état pour se cacher du tout? Je pense que c'est ce que vous dites dans la question numéro 1, mais je ne suis pas certain à 100%. – Aaron

Répondre

1

Je ne pense pas que vous pouvez le faire directement avec l'API iOS 7 de contrôleur de transition de vue.

Maintenant, je suppose que basé sur les crochets de cette API et l'API de barre d'état que la barre d'état est un animal à lui-même et n'est pas disponible pour animer avec une transition personnalisée. Je pense que c'est le cas car lorsque le UIViewControllerContextTransitioning transitionContext est créé pour vous, le contrôleur A est déjà ajouté à containerView et parce que vous êtes responsable de l'ajout du contrôleur de vue B au containerView (parce que vous avez besoin de passer à celui-ci) Les méthodes de manipulation de la barre d'état du contrôleur B sont déclenchées lorsque vous le faites.

Cependant, vous pouvez Animer UIApplication cadre de keyWindow de 'lors de votre transition d'animation Ainsi, dans la méthode -animateTransition: de votre classe qui implémente UIViewControllerAnimatedTransitioning.

[UIView animateWithDuration:[self transitionDuration:transitionContext] delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ 

    [UIApplication sharedApplication].keyWindow.frame = CGRectMake(0, 0, 320, 568); // move frame up 

} completion:^(BOOL finished) { 

    // assuming 
    [UIApplication sharedApplication].keyWindow.frame = CGRectMake(0, 20, 320, 568); //move frame down 
}]; 

Si vous allez avec cette approche, vous aurez probablement besoin d'ajuster le cadre de la fenêtre clé dans le contrôleur A vue descendre en dessous de la barre d'état et être style clair/foncé au besoin. Ensuite, faites le contraire pour obtenir l'effet que vous voulez dans le contrôleur de vue B. Son méchant, mais il pourrait fonctionner.

+0

Monsieur, est-ce aussi le même cas si on pousse la vue contrôleur à navigationController? il a encore une transition d'animation (par défaut) non? – matadorx12

+0

Je ne suis pas sûr de comprendre votre question. – Aaron

+0

je veux dire pousser la vue à navigationController avec 'self.navigationController pushViewController' a aussi une transition. est-ce le même cas que ci-dessus? parce que je ne peux pas faire l'animation de la barre de statut se cachant même quand je passe de 'A' à' B' sans 'T'. sans utiliser 'T' sur Transition' A' à 'B'. – matadorx12

Questions connexes