Wie zu entlassen, modal VC mit fade-out-animation?
Ich bin mit dem folgenden code in meine Vorlage VC zu verblassen, in der das Kind modal VC, und diese gut funktioniert:
self.infoViewController.view.alpha = 0.0;
[self.navigationController presentModalViewController:self.infoViewController animated:NO];
[UIView animateWithDuration:0.5
animations:^{self.infoViewController.view.alpha = 1.0;}];
Aber ich kann es nicht erhalten, fade out, ich habe versucht ein paar Dinge, dies ist die neueste, die ich habe versucht, das funktioniert nicht:
- (IBAction)dismissAction:(id)sender
{
if ([[self parentViewController] respondsToSelector:@selector(dismissModalViewControllerAnimated:)])
{
[[self parentViewController] dismissModalViewControllerAnimated:YES];
self.parentViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
self.parentViewController.view.alpha = 0.0;
[UIView animateWithDuration:0.5
animations:^{self.parentViewController.view.alpha = 1.0;}];
} else
{
[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
self.presentedViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
self.presentedViewController.view.alpha = 0.0;
[UIView animateWithDuration:0.5
animations:^{
self.presentedViewController.view.alpha = 1.0;}];
}
}
Den modal-view-controller ist verblasst aber sofort, nicht über einen Zeitraum, wie es ist, wenn Ihr angezeigt.
InformationsquelleAutor der Frage Gruntcakes | 2012-01-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser (original-Teil) ist nicht nehmen Sie Weg von H2CO3 die richtige Antwort.
UIModalTransitionStyleCrossDissolve
hat ziemlich viel genau die Wirkung, die Sie suchen. Sie sind nur nicht die Einstellung der modalTransitionStyle, bis es zu spät ist. Ersetzen Sie alle Ihre Codes mit diesen Funktionen gibt es entsprechende Positionen:Bearbeiten in Reaktion auf das timing ein Problem: reden wir über den fehlerhaften code. Konzentrieren wir uns nur auf die if-true Teil, da es im wesentlichen identisch mit dem anderen.
Wenn Sie schauen, für eine gegenseitige animation ist es nicht. In Ihrer ursprünglichen animation legen Sie die nächste Ansicht ist alpha auf 0, dann präsentiert die nächste view-controller, dann legen Sie es anzeigen für alpha-1. So logisch Sie brauchen zu entlassen, die view-controller nach der animation; Das ist wirklich einfach über Blöcke. Der code würde wie folgt Aussehen:
Diese Zeile code animiert die Ansicht s alpha auf 0, dann (nach Fertigstellung) lehnt die vorgestellten view-controller, und legt die Ansicht ist alpha wieder auf 1. Dies ist eine gegenseitige animation.
InformationsquelleAutor der Antwort NJones
In den docs von UIViewController, die wir finden können:
Setzen Sie diese Eigenschaft auf
UIModalTransitionStyleCrossDissolve
und es lösen sich richtig 🙂Hoffe, das hilft.
InformationsquelleAutor der Antwort
Ich denke, das könnte nützlich sein für diejenigen, die heldenhaften Jungs, die immer noch versucht, zu verwenden MPMoviePlayerViewController im Vollbild-Modus und mit der Orientierung, die sich von der app groß.
Habe ich damit verbracht, buchstäblich eine Hälfte des Arbeitstages zu spielen mit präsentieren MPMoviePlayerViewController Modal oder nicht Modal. Aber es gibt kein Glück mit, dass-im Sinne des übergangs animation ändern. (Der modal-Modus benötigt für die Einstellung der Ausrichtung, die sich von der app wichtige Orientierung).
Versuchte ich presentViewController oder presentModalViewController, aber das Ergebnis ist das gleiche. Egal, welche Art ist die modalTransitionStyle-Eigenschaft festgelegt, wenn ich [... dismissViewControllerAnimated:true ...] dann die Standard-übergang-Stil (UIModalTransitionStyleCoverVertical) trotzdem verwendet. Getestet habe ich das in der iOS 5.1-Gerät und iOS 6 Simulator.
Ich habe nicht versucht, alle anderen Arten von Steuerungen... wenn man Bedenkt, dass common controller hat Methode dismissMoviePlayerViewControlleranimated, kann ich davon ausgehen, dass diese Methode trotzdem verwendet für die Entlassung einen video-controller, egal wie es gemacht erscheinen. (Die Eingabe von übergängen funktionierte bei mir nicht so gut, außer Sie habe nicht als CoverVertical (im Falle von modalTransitionStyle ändern).
So, meine Lösung war nicht verwenden, den übergang animation überhaupt.
Ich bin sicher, Apple hatte einige Gründe, für die nur bestimmte animation für MovieViewController (ich hoffe wirklich so, und das war nicht wegen "Faulheit"), aber wenn Sie wollten einige schöne Erfahrung, die user bekommen würde, Sie scheiterten, wie in meiner app, sogar besser, wenn das video angezeigt, ohne animation (die ist schlimmer als CrossDisolving sicher), aber das ist besser, als zu banal CoverVertical.
Suchen, die aus Entwickler-Sicht, es klingt wirklich wie Sie verbringen viel mehr Geld für Designer zu malen, schöne icons für die Kunden anstelle von angenehmer und effektiver Arbeit der Entwickler. (
InformationsquelleAutor der Antwort Agat