2009-07-19 16 views
0

Ich habe eine UI-Steuerung mit Schieberegler wie den Entsperrmechanismus auf dem iPhone implementiert.Verschieben einer UIImageView mit einer Animation

Wenn die touchsEnded-Methode aufgerufen wird, setze ich den Schieberegler auf seine Startposition zurück. Stattdessen möchte ich seinen Rückzug in die Ausgangsposition animieren.

Der Code sollte in etwa so sein, aber es funktioniert nicht. Was mache ich hier falsch?

Self.unlock ist ein UIImageView:

CABasicAnimation *theAnimation; 
theAnimation = [CABasicAnimation animationWithKeyPath:@"position.x"]; 
theAnimation.fromValue = [NSNumber numberWithFloat:BEGINX]; 
theAnimation.toValue = [NSNumber numberWithFloat: 0.0]; 
theAnimation.duration = 0.5; 
[self.unlock addAnimation: theAnimation]; 

Sorry für die Knochen-köpfigen Frage!

Antwort

3

Sie können dies wahrscheinlich viel einfacher mit impliziter Animation tun. Angenommen, Sie sind zur Zeit so etwas wie dies tun:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    ... 
    myView.frame = startingFrame; 
    ... 
} 

Sie können den impliziten Animator verwenden, um alle Änderungen animieren Sie zu der Ansicht zu machen (wie zum Beispiel Rahmen):

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    ... 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    myView.frame = startingFrame; 
    [UIView commitAnimations]; 
    ... 
} 
+0

Hey, danke ... Ich denke, dass ich es falsch mache. Ich habe den folgenden Code ausprobiert und bekam eine Warnung "UIImageView kann nicht darauf antworten" ein paar Mal: ​​\t \t [self.unlock beginAnimations: nil context: nil]; \t \t [self.unlock setAnimationDuration: 0.5]; \t \t self.unlock.frame = CGRectMake (0, 0, 75, 37); \t \t [self.unlock commitAnimations]; –

+0

Nevermind, ich sehe Ihren Code ist genau so wie geschrieben. Klappt wunderbar. Vielen Dank! –

Verwandte Themen