UIView animation Stoppt, wenn die Ansicht verschwindet, nicht fortsetzen, wenn es wieder angezeigt wird
Hier ist meine config:
Habe ich ein storyboard mit einer ListViewController. ListViewController hat eine Untersicht UIView genannt EmptyListView. EmptyListView wird nur angezeigt, wenn es keine Elemente in der UITableView, ansonsten ist es versteckt.
EmptyListView hat eine Untersicht UIImageView genannt emptyListViewArrow, die optisch deutet auf die Schaltfläche erstellen Sie einen neuen Eintrag in meiner UITableView. Dieser Pfeil animiert ist unendlich in eine up & down-Mode.
Höre ich für EmptyListView um eine Benachrichtigung zu senden, wenn es beendet ist, legte es Untersichten. Ich mache das, weil wenn nicht, Animationen, mutieren Sie Zwängen sich falsch Verhalten.
- (void) layoutSubviews {
[super layoutSubviews];
[[NSNotificationCenter defaultCenter] postNotificationName:@"EmptyViewDidLayoutSubviews" object:nil];
}
Wenn ListViewController beobachtet diese Meldung, es beginnt die animation:
[UIView animateWithDuration:0.8f delay:0.0f options:(UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse) animations:^{
self.emptyListViewArrowVerticalSpace.constant = 15.0f;
[emptyListView layoutIfNeeded];
} completion:nil];
Wenn ich die app im hintergrund oder drücken Sie eine andere ViewController auf den Stapel, sobald ich wieder kommen, um die app oder die ListViewController, die animation wird gestoppt/angehalten. Ich kann es nicht erhalten, um wieder zu starten.
Ich versucht habe:
- Hören, die für die Anwendung zurücktreten wird/ist aktiv geworden. Beim Austritt habe ich [selbst.Blick.Schicht removeAllAnimations] und dann versucht zu starten die animation erneut mit dem code oben.
- Entfernen der UIImageView animiert und das hinzufügen es zurück auf die übergeordnete Sicht, und dann versucht, um die animation zu starten.
Ich bin traurig darüber, dass die Verwendung von constraints hier, würde aber gerne einen Einblick in das, was könnte das problem sein.
Danke!
- Sind Sie mit Ihren Methoden in
viewDidLoad
oderviewWillAppear
? - viewDidAppear, aber nicht für einen bestimmten Grund.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, was Sie tun, mit dieser Mitteilung. Ich habe getan, viele Animationen mit Einschränkungen und hatte nie zu tun. Ich denke, das problem ist, dass beim verlassen der Ansicht, die Einschränkung der Konstanten wird der Wert 15 (ich habe geprüft, die Protokolle in viewWillDisappear), so dass die animation, um es zu 15, nichts. In einer test-app, habe ich die Konstante wieder zu seinem Ausgangswert (0) im viewWillAppear, und es hat funktioniert:
Ich hatte das gleiche Problem. Gelöst, mit den folgenden.
Oder Sie haben eine Gruppe von Animationen
Dies ist die Nachteil.
Um dies zu überwinden, müssen Sie wieder rufen Sie die animation-Methode.
Können Sie es tun, wie folgt :
Hinzufügen Beobachter in Ihren controller
Dies wird aufgerufen, sobald Sie wieder die app.
Diese Methode hinzuzufügen :
Hoffe, dies wird Ihnen helfen.
Ich war mit den gleiche problem. Ich angewandte animation, um eine Bildansicht in viewDidLoad.
Aber Wann immer ich schob einige andere VC und kam zurück, die animation war nicht arbeiten.
Hatte ich zum zurücksetzen der animation in
viewWillDisappear
wie diesemyImageView.transform = .Identität
myImageView.alpha = 1
Schreiben die obige animation block (
UIView.animate()
) in viewWillAppear AUCH.Hoffe, das hilft
Dem gleichen problem konfrontiert sind, wenn Sie die app geht in hintergrund und wieder zurück zum Vordergrund :
Swift :