Faites glisser la navigation à travers les balayages pour UIView pour superposer un autre UIView

Sur mes searchs concernant cette technique de navigation, j'ai trouvé ce billet de Nick Harris qui est un bon début je suppose. Cependant, ce que je veux est légèrement différent de cela. Vous pouvez le considérer comme le Notification Center iOS lorsque vous n'avez plus qu'à faire glisser le doigt depuis le haut pour afficher la view et à le faire glisser vers l'arrière pour le masquer à nouveau. Dans mon cas, je souhaite révéler un UIView caché venant du côté droit de l'écran avec un geste de glissement vers la gauche et le cacher de nouveau par le même geste (cette fois vers la droite).

J'ai réussi à get une solution sur mon post précédent concernant l'affichage / la dissimulation d'un UIView. Une chose que je souhaite append est le geste de glisser.

Je ne voudrais pas modifier mon délégué de l'application pour le faire comme Nick Harris l'a fait. Donc, si quelqu'un a des idées / des exemples de code sur la façon dont je pourrais le faire, je serais très reconnaissant.

Faire la lumière 🙂

Vous pouvez révéler un UIView caché provenant du côté droit de l'écran avec un mouvement de balayage vers la gauche et le masquer à nouveau par le même geste (cette fois vers la droite). ajout de transition.

Ajouter BOOL didNotSwipe dans le file .h append sa valeur didNotSwipe = TRUE dans le file .m file viewDidLoad méthode

Ajoutez le mouvement de balayage avec la direction gauche et droite avec le sélecteur différent à votre self.view.

  UISwipeGestureRecognizer *recognizer; recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)]; [recognizer setDirection:UISwipeGestureRecognizerDirectionRight]; [[self view] addGestureRecognizer:recognizer]; [recognizer release]; UISwipeGestureRecognizer *recognizer1; recognizer1 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeleft:)]; [recognizer1 setDirection:UISwipeGestureRecognizerDirectionLeft]; [[self view] addGestureRecognizer:recognizer1]; [recognizer1 release]; 

Lorsque vous faites glisser, cette méthode est appelée:

  -(void)swipeleft:(UISwipeGestureRecognizer *)swipeGesture { if (didNotSwipe) { didNotSwipe = FALSE; CATransition *animation = [CATransition animation]; [animation setDelegate:self]; [animation setType:kCATransitionPush]; [animation setSubtype:kCATransitionFromRight]; [animation setDuration:0.50]; [animation setTimingFunction: [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [self.view.layer addAnimation:animation forKey:kCATransition]; [self.view addSubView:self.overlayView]; //[self.overlayView setFrame:CGRectMake(0,0,self.overlayView.frame.size.width,self.overlayView.frame.size.height)]; } } 

quand balayez vers la droite cette méthode:

  -(void)swipeRight:(UISwipeGestureRecognizer *)swipeGesture { if(!didNotSwipe){ didNotSwipe = TRUE; CATransition *animation = [CATransition animation]; [animation setDelegate:self]; [animation setType:kCATransitionPush]; [animation setSubtype:kCATransitionFromLeft]; [animation setDuration:0.40]; [animation setTimingFunction: [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [self.view.layer addAnimation:animation forKey:kCATransition]; [self.overlayView removeFromSuperView]; } }