J'essaie de créer une application iOS avec des blocs flottant sur l'écran (UIViews). Je les ai flottant sur l'écran mais je veux aussi que l'utilisateur soit capable de les déplacer sur l'axe des x quand ils tombent. J'ai essayé de le faire avec le code ci-dessous mais ils tombent juste et ne bougent pas de gauche à droite. Mon problème est que j'essaie de le déplacer avec mon doigt de gauche à droite car il bouge déjà en ville. Comment puis-je adapter le code ci-dessous pour travailler?Déplace UIView de gauche à droite tout en descendant l'écran
Remarque: J'ai été capable de déplacer les vues de gauche à droite sans les déplacer vers le bas de l'écran et j'ai été en mesure de les déplacer vers le bas de l'écran sans les déplacer de gauche à droite. Le problème se pose lorsque je combine les deux.
ANIMATION POUR Y AXIS
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:letView.speed];
[UIView setAnimationDelay:0.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
letView.layer.frame = CGRectMake(letView.layer.frame.origin.x, [[UIScreen mainScreen] bounds].size.height, letView.layer.frame.size.width, letView.layer.frame.size.height);
[UIView commitAnimations];
ANIMATION POUR TOUCHER
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchLocation = [touch locationInView:self.view];
//Goes through an array of views to see which one to move
for (LetterView * view in _viewArray) {
if (CGRectContainsPoint(view.frame, touchLocation)) {
dragging = YES;
currentDragView = view;
[currentDragView.layer removeAllAnimations];
}
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchLocation = [touch locationInView:self.view];
if (dragging) {
CGPoint location = touchLocation;
currentDragView.center = CGPointMake(location.x, currentDragView.center.y);
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
dragging = NO;
[self checkForCorrectWord];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:currentDragView.speed];
[UIView setAnimationDelay:0.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
currentDragView
.layer.frame = CGRectMake(currentDragView.layer.frame.origin.x, [[UIScreen mainScreen] bounds].size.height, currentDragView.layer.frame.size.width, currentDragView.layer.frame.size.height);
[UIView commitAnimations];
}
Avez-vous débogué pour vérifier que votre 'CGRectContainsPoint' est correspondant? Les vues de _viewArray sont-elles toutes des sous-classes directes de self.view? – Wain
J'ai été capable de déplacer les vues de gauche à droite sans les déplacer vers le bas de l'écran et j'ai été capable de les déplacer vers le bas de l'écran sans les déplacer. Le problème se pose lorsque je combine les deux. – BDGapps
Comment fonctionne l'animation sur l'écran? Votre code de manipulation tactile supprime toutes les animations du calque de vue tactile. Votre question ne donne vraiment que des détails sur la moitié de l'information. – Wain