Déplacement d'une UIView à l'intérieur d'une autre
J'ai 2 UIView. L'une contient l'autre et je suis capable d'en déplacer une mais impossible de l'obliger à rester dans l'autre UIView.
Dans la méthode touchesMoved, j'ai le code suivant:
J'ai essayé plusieurs options mais rien n'y fait. Si quelqu'un peut m'aider, merci par avance
Dans la méthode touchesMoved, j'ai le code suivant:
//Bounds detection<br /> if( (firstRect.center.x + 40) > self.bounds.size.width || (firstRect.center.x - 40) < 0)<br /> {<br /> NSLog(@"Limite atteinte en x");<br /> firstRect.center = [touch previousLocationInView:self];<br /> }<br /> else firstRect.center = [touch locationInView:self];<br /> <br /> if( (firstRect.center.y + 80) > self.bounds.size.height || (firstRect.center.y - 80) < 0)<br /> {<br /> NSLog(@"Limite atteinte en y");<br /> }
J'ai essayé plusieurs options mais rien n'y fait. Si quelqu'un peut m'aider, merci par avance
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
- Soit par le code [myView1 addSubview myView2];
- Soit dans IB comme l'indique les images ci-dessous
Je ne suis pas sur de bien comprendre. Tu parles de la vue la plus interne ? Tu dois pouvoir la déplacer mais elle disparaà®t car elle n'est visible qu'à travers "la fenêtre", le clipping de la vue mère. Tu peux y remédier en utilisant la property clipsToBounds de UIView.
clipsToBounds
A Boolean value that determines whether subviews can be drawn outside the bounds of the receiver.
@property(nonatomic) BOOL clipsToBounds
Cependant, je ne sais pas ce que tu fais avec cela, mais cela semble bizarre comme besoin.
Par exemple, un bounds=CGRectMake(-frame.size.width/2.,-frame.size.height/2.,frame.size.width,frame.size.height) correspond à rendre visible un rectangle à l'échelle 1, et dont le centre est le point (0,0).
Mon besoin est de pouvoir déplacer une forme (UIView) à l'intérieur d'une autre (UIView). Ma 1ère forme doit rester à l'intérieur.
Il faut faire le test sur la valeur future et non sur la valeur actuelle
Par contre quand la limite est atteinte, il arrive que je ne puisse plus la déplacer. Il faut que j'enlève mon "doigt" puis que je recommence à la déplacer.
Ma vue est un carré de 50x50 px.
Essai : Définir un booléen draggingMyView
- Le mettre à YES dans touchesBegan si le touch a lieu dans myView
- Supprimer le test if ([touch view] == myView) dans touchesMoved
- Le mettre à NO dans touchesEnded
rq perso dans ce genre de problème je confie à la vue qui se déplace le soin de se déplacer, et non au contrôleur de la supervue ...