2016-04-06 1 views
0

J'ai un écran, appelez-le écran vidéo où une vidéo est affichée avec des détails et des commentaires, tout comme YouTube. Maintenant, cette vue est glissable, signifie que chaque fois que l'utilisateur fait glisser l'écran, la vidéo suivante ou précédente vient en changeant la vue du contenu entier.Comment donner une animation glissante à un seul UIView?

J'utilise [UIView transitionWithView] pour lui donner un effet de glissement. En changeant la vue de l'image du contenu, je fais glisser le code de droite comme ci-dessous.

[UIView transitionWithView:viewTop duration:0.4 
         options:UIViewAnimationOptionTransitionCrossDissolve 
        animations:^{ 
         viewTop.frame = CGRectMake(SCREEN_WIDTH, viewTop.frame.origin.y, viewTop.frame.size.width, viewTop.frame.size.height); 
        } 
        completion:^(BOOL Finished){ 

         [self getNextVideoDetail]; 
         viewTop.frame = CGRectMake(-SCREEN_WIDTH, viewTop.frame.origin.y, viewTop.frame.size.width, viewTop.frame.size.height); 

         [UIView transitionWithView:viewTop duration:0.3 
            options:UIViewAnimationOptionTransitionCrossDissolve 
           animations:^{ 
            viewTop.frame = CGRectMake(0, viewTop.frame.origin.y, viewTop.frame.size.width, viewTop.frame.size.height); 
           } 
           completion:nil 
        ]; 

        }]; 

Ici, viewTop est ma vue de contenu. Tout fonctionne bien mais je veux que chaque fois que je fais glisser l'écran vers la gauche, avant que la vue disparaisse complètement, une partie de la vue devrait être affichée sur le côté droit. Parce que le code que j'ai écrit ci-dessus montrera self.view blanc et l'écran sera vide pendant quelques secondes mili.

Est-il possible avec un seul UIView de naviguer dans des vidéos comme donner un effet miroir?

Répondre

1

Utilisez ceci:

CATransition *transition = [CATransition animation]; 
transition.type = kCATransitionPush; 
transition.subtype = kCATransitionFromLeft; 
transition.duration = 0.4; 
[viewTop.layer addAnimation:transition forKey:nil]; 
+0

merci, vous avez enregistré ma journée :) –

+0

client n'a pas aimé la transition que l'effet était comme la décoloration. Le scintillement provoque tout en glissant. Je veux une animation fluide tout comme Mac a tout en glissant à travers les fenêtres de travail. –

+0

Ensuite, vous pouvez essayer d'ajouter toutes vos vues dans un scrollview, ce qui vous donnera automatiquement l'effet d'animation désiré lors du défilement. Vous devrez définir 'scrollview.pagingEnabled = YES;' – Nishant