Déplacement de UIView dans Parent UIView (UIPanGestureRecognizer)
J'utilise le code suivant pour déplacer une UIImageView qui est présent à l'intérieur d'une UIView.
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}
Je voudrais faire en sorte que les UIView ne se déplace pas en dehors de la vue parent. À la minute où l'affichage de l'image est capable de se déplacer à travers la totalité de l'écran.
source d'informationauteur ORStudios
Vous devez vous connecter pour publier un commentaire.
D'abord que le nouveau cadre de votre
UIImageView
et vérifier si elle est complètement à l'intérieur de son superView à l'aide deCGRectContainsRect()
méthode. Si oui, puis définissezUImageView's
cadre d'un nouveau cadre.Assurez-vous que vous passez
bounds
de superView etframe
deUIImageView
de sorte que les deuxCGRects
sont dans le même système de coordonnées.Essayer avec:
De cette façon, il ne pourra jamais se déplacer à l'extérieur de la vue parente de limites et il vient de "coller" à la pointe si vous essayez de le sortir des limites!
Vous devez définir la
recognizer.view.center
à une nouvelle valeur que si sesframe
est à l'intérieur de labounds
de la vue parente. UtilisationCGRectContainsRect
surrecognizer.view.superview.bounds
etrecognizer.view.frame
pour vérifier qu'ils sont contenus.Si vous souhaitez autoriser l'affichage de l'image à déplacer en dehors de sa vue parent jusqu'à ce que le point central de la vue à l'extérieur de la mère de limites, vous pouvez utiliser le
convertPoint:toView
méthode deUIView
et vérifiez que la nouvelleCGPoint
n'est pas à l'extérieur de votre parent limites.P. S. Utilisez le geste de l'état du bloc d'initier, de casserole, retirer. c'est à dire UIGestureRecognizerStateBegan
UIGestureRecognizerStateChanged
UIGestureRecognizerStateEnded
Swift version de micantox réponse