Nach der Animation wird die Ansichtsposition zurückgesetzt

Ich versuche eine view slide von oben nach unten. Dies ist nicht eine große Sache, die ich verwendet CABasicAnimation. Das problem ist, wenn ich wollen, entfernen Sie die anzeigen. Ich diese animation verwenden.

CABasicAnimation *animation;
animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setDelegate:self];
animation.toValue = [NSValue valueWithCGPoint:CGPointMake(self.view.layer.position.x, 0 - self.view.bounds.size.height / 2)];
animation.fromValue = [NSValue valueWithCGPoint:self.view.layer.position];
animation.autoreverses = NO;
animation.repeatCount = 0;
animation.duration = 0.25;
animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
[self.view.layer  addAnimation:animation forKey:@"moveX"];

Wodurch die Sicht perfekt. Aber, nachdem die animation beendet ist, meiner Ansicht wieder erscheint. Also fügte ich diese Zeile :

[self.view removeFromSuperview];

Entfernt die anzeigen, aber keine animation. Also beschloss ich, fügen Sie den code entfernen, um diese Stellvertretung:

-(void) animationDidStop:(CAAnimation *) animation finished:(bool) flag

So, jetzt, die animation, die Sicht verschwindet, aber manchmal kann ich sehen, die anzeigen erscheinen und verschwinden schneller, wie nach der animation, die Ansicht erscheint, dann ist die animationDidStop Delegat aufgerufen wird, und die Sicht verschwindet, das ist natürlich schrecklich. Was mache ich falsch?

InformationsquelleAutor der Frage carlos | 2008-10-22

Schreibe einen Kommentar