Anstatt zwei zu erstellen UIImageViews
, erscheint es logisch, einfach die image
einer Ansicht zu ändern . Wenn ich das mache, gibt es dann eher eine Überblendung zwischen den beiden Bildern als einen sofortigen Wechsel?
ios
objective-c
swift
cocoa-touch
uiimageview
Josh Kahane
quelle
quelle
Antworten:
Bearbeiten: Es gibt eine bessere Lösung von @algal unten .
Eine andere Möglichkeit, dies zu tun, ist die Verwendung vordefinierter CAAnimation-Übergänge:
Weitere Informationen finden Sie im Beispielprojekt "View Transitions" von Apple: https://developer.apple.com/library/content/samplecode/ViewTransitions/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007411
quelle
Mit den neuen blockbasierten
UIKit animation
Methoden kann es viel einfacher sein .Angenommen, der folgende Code befindet sich im Ansichts-Controller, und die UIImageView, die Sie auflösen möchten, ist eine Unteransicht von self.view, die über die Eigenschaft adressierbar ist.
self.imageView
Dann benötigen Sie lediglich :Getan.
Und um es in Swift zu tun, ist es so:
Swift 3, 4 & 5
quelle
Für Swift 3.0.1:
Referenz: https://gist.github.com/licvido/bc22343cacfa3a8ccf88
quelle
Ja, was Sie sagen, ist absolut richtig und das ist der Weg, es zu tun. Ich habe diese Methode geschrieben und verwende sie immer, um mein Bild auszublenden. Ich beschäftige mich
CALayer
damit. Dazu müssen Sie Core Animation importieren.Sie können das Gegenteil tun, um ein Bild auszublenden. Nachdem es ausgeblendet ist. Sie entfernen es einfach aus der Übersicht (was ist
UIImageView
).[imageView removeFromSuperview]
.quelle
Sie können die Einblendfunktion auch in eine Unterklasse packen, um sie dann wie im folgenden Beispiel als allgemeine UIImageView zu verwenden:
Eine mögliche Implementierung folgt.
Hinweis: Die Art und Weisen Sie tatsächlich die Fade-in implementieren in der
setImage:
Funktion kann, ändern und eine der anderen hervorragenden Beispiele in den anderen Antworten auf diese Frage beschrieben werden könnten - eine zusätzliche on-the-fly zu schaffen ,UIImageView
wie ich bin hier Macht zu tun in Ihrer spezifischen Situation ein inakzeptabler Aufwand sein .IMMFadeImageView.h :
IMMFadeImageView.m :
Der obige Code basiert auf einigen Annahmen (einschließlich der Aktivierung von ARC in Ihrem XCode-Projekt), ist nur als Proof of Concept gedacht und bleibt im Interesse der Klarheit und Fokussierung relevant, indem wichtiger nicht verwandter Code weggelassen wird. Bitte kopieren Sie es nicht einfach blind.
quelle
Ich brauchte den Übergang, um ihn auf unbestimmte Zeit zu wiederholen. Es dauerte eine Menge Versuch und Irrtum für diesen, aber ich bekam endlich das Endergebnis, das ich suchte. Dies sind Codefragmente zum Hinzufügen von Bildanimationen zu einer UIImageView in einer UITableViewCell.
Hier ist der relevante Code:
quelle
Nachdem ich
UIView.transition()
mit der.transitionCrossDissolve
Option herumgespielt und Probleme mit der Option festgestellt hatte (ich habe versucht, Bilder zu animieren, die sich in einer UIImageView ändern, und der Übergang erfolgte sofort ohne Animation), stellte ich fest, dass Sie nur eine weitere Option hinzufügen müssen, mit der Sie Eigenschaften animieren können, die sich in der Ansicht ändern ( Swift 4.2 ):Außerdem: Wenn Ihre Bildansicht Unteransichten enthält, wird diese ebenfalls neu gezeichnet und kann Animationen verhindern. Zum Beispiel hatte ich eine Unteransicht mit Unschärfe in meiner Bildansicht und in diesem Fall funktioniert die Animation nicht. Also habe ich einfach meine Ansichtshierarchie geändert und die Unschärfe in eine eigene Ansicht verschoben und über imageView platziert.
quelle
Dies ist meiner Meinung nach der kürzeste Weg. Erstellen Sie eine UIView-Animation und schreiben Sie sie in Ihre imageView.
quelle
Durch die Verwendung der
highlightedImage
Eigenschaft kann dies etwas einfacher gemacht werden. Hier ist ein Beispiel in Swift 3. Stellen Sie zuerst sowohl das normale als auch das hervorgehobene Bild ein:Und wenn Sie zwischen diesen animierten wechseln möchten:
quelle