Moving View bien par Uipangesterurerecognizer, mais il faut parfois nerveux
-
13-11-2019 - |
Question
Je déplace des vues de ce code, il bouge bien mais parfois ils sont très naissants, aucune idée de cela?
[[[(UITapGestureRecognizer*)sender view] layer] removeAllAnimations];
[self.view bringSubviewToFront:[(UIPanGestureRecognizer*)sender view]];
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view];
if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
firstX = [[sender view] center].x;
firstY = [[sender view] center].y;
}
translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y);
[[sender view] setCenter:translatedPoint];
if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
CGFloat finalX = translatedPoint.x + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].x);
CGFloat finalY = translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.35];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[[sender view] setCenter:CGPointMake(finalX, finalY)];
[UIView commitAnimations];
La solution
Cela ne semble pas que rien dans votre code ci-dessus ralentirait le panoramique.Toute réponse lente sur l'interface utilisateur est de 99% du temps causé par la reconquête.Jetez un coup d'œil à votre code Drawrect (si vous l'avez implémenté) pour les vues que vous avez panoramique.Si cela est appelé chaque fois que vous PAN, cela peut vous causer des problèmes.Vous pouvez le résoudre en définissant la propriété Rasterize sur Oui à votre vue.