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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, nach der Apple-Probe "MoveMe", diese (removedOnCompletion) funktionieren sollte, aber es scheint nicht zu.
So, fügen Sie diese Zeilen nach dem code:
Dadurch wird sichergestellt, dass nach der animation ausgeführt wird, wird die Ebene richtig positioniert ist.
InformationsquelleAutor der Antwort Ben Gottlieb
Vielleicht möchten Sie diese Eigenschaften festlegen. Verursachen Sie die Präsentation erhalten Sie am Ende der animation.
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
Dann die "animationDidStop:" die Methode kann verwendet werden, entfernen Sie die anzeigen am Ende der animation:
InformationsquelleAutor der Antwort
Hatte ich dieses Problem beim ausführen mehrere Animationen in einer animation Gruppe. Ich musste ein paar Eigenschaften, die auf die animation der Gruppe selbst, nicht die einzelnen Animationen.
InformationsquelleAutor der Antwort FreeAsInBeer
Diese ein bisschen auch für mich. Sie möchten die animation ist removedOnCompletion flag auf NEIN. Es standardmäßig auf "JA", was bedeutet, dass, nachdem die animation abgeschlossen ist, wird er entfernt, und der Blick kehrt zu Ihrem ursprünglichen Zustand.
InformationsquelleAutor der Antwort Ben Gottlieb
Einstellung der Ansicht auf versteckte wie Rob vorschlägt, sollte man es tun.
Eigenschaften von Eigenschaften würde ich stick mit dem ObjC 2.0-Stil, wie Sie bereits in Ihrem code.
InformationsquelleAutor der Antwort danimal
Können Sie legen Sie die view-die hidden-Eigenschaft auf JA?
Ich denke, es wäre:
Aber es könnte sein:
Ich stellt sich heraus, ich bin ziemlich lahm, um herauszufinden, den richtigen Weg, um auf Eigenschaften zuzugreifen, Eigenschaften.
InformationsquelleAutor der Antwort Rob Drimmie