web-dev-qa-db-fra.com

Ajouter une animation Slide In de gauche à droite (transition) dans addSubView

J'essaye d'imiter le NavigationViewController, très similaire au MailApp par défaut dans iPhone

Lorsque vous cliquez sur un résumé du courrier, il doit slide-in les détails du courrier, et lorsque RETOUR bouton est cliqué, vue Résumé du courrier doit être glissé à nouveau.

Voici ce que j'ai pour animer la transition du résumé au détail (removeFromSuperView)

CGRect temp = self.view.frame;
temp.Origin.x = 300;
[UIView animateWithDuration:0.5
                      delay:0.0
                    options: UIViewAnimationCurveEaseOut
                 animations:^{
                     self.view.frame = temp;
                 }completion:^(BOOL finished){
                     [self.view removeFromSuperview];
                 }];

C'est ce que j'ai pour animer la transition du détail au résumé (addSubview)

    CATransition *transition = [CATransition animation];
    transition.duration = 0.5;
    transition.type = kCATransitionFromRight;
    transition.subtype = kCATransitionFade;
    [parentView.layer addAnimation:transition forKey:nil];
    [parentView addSubview:myVC.view];

Maintenant, ma première partie de code fonctionne bien! Où-comme la deuxième partie, je suis juste capable de réaliser l'animation de fondu. Comment puis-je introduire la transition de diapositive?

16
Maheswaran Ravisankar

Je dois juste choisir le type de kCATransitionPush pour mon CATransition

    CATransition *transition = [CATransition animation];
    transition.duration = 0.5;
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromLeft;
    [transition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
    [parentView.layer addAnimation:transition forKey:nil];

    [parentView addSubview:myVC.view];

Mise à jour pour Swift:

    let transition = CATransition()
    transition.type = kCATransitionPush
    transition.subtype = kCATransitionFromLeft
    parentView.layer.add(transition, forKey: nil)
    parentView.addSubview(myVC.view)
59
Maheswaran Ravisankar

Ou vous pouvez vérifier: HorizontalSlide Segue (juste google, je ne peux pas obtenir le lien, sur mobile) c'est une excellente transition coulissante qui est simplement une séquence que vous ajoutez de la vue A à B ....

Sur une note latérale, s'il s'agit d'un contrôleur de navigation, un Push ou un pop devrait avoir une animation de diapositive par défaut ...

0
Andy