iPad: Bewegen UIView mit animation, bewegen Sie ihn dann wieder

Ich habe den folgenden code in eine UIView-Unterklasse, die bewegen, werden Sie aus dem Bildschirm mit einer animation:

float currentX = xposition; //variables that store where the UIView is located
float currentY = yposition;

float targetX = -5.0f - self.width;
float targetY = -5.0f - self.height;

moveX = targetX - currentX; //stored as an instance variable so I can hang on to it and move it back
moveY = targetY - currentY;

[UIView beginAnimations:@"UIBase Hide" context:nil];
[UIView setAnimationDuration:duration]; 
self.transform = CGAffineTransformMakeTranslation(moveX,moveY);
[UIView commitAnimations];

Es funktioniert einfach toll. Ich habe mich verändert targetX/Y = 0 um zu sehen, ob es tatsächlich zu bewegen, um den angegebenen Punkt, und das tut es.

Das problem ist, wenn ich versuche, und verschieben Sie die Ansicht zurück, wo es ursprünglich war:

moveX = -moveX;
moveY = -moveY;

[UIView beginAnimations:@"UIBase Show" context:nil];
[UIView setAnimationDuration:duration];
self.transform = CGAffineTransformMakeTranslation(moveX,moveY);
[UIView commitAnimations];

Dadurch wird die UIView etwa 3x so weit wie es sollte. So wird die Ansicht in der Regel wird das aus der rechten Seite des Bildschirms (je nach dem wo es ist).

Gibt es etwas, mit dem CGAffineTransforMakeTranslation Funktion die ich kennen sollte? Ich habe die Dokumentation gelesen, und was ich sagen kann, es sollte das tun, was ich erwarte, es zu tun.

Jemand einen Vorschlag, wie man dieses Problem beheben? Danke.

InformationsquelleAutor Joel | 2010-05-24
Schreibe einen Kommentar