UIView endlos rotieren

Gerade saß ich an dem Problem, einen typischen Refresh-Button zu erstellen, der sich nach dem Aktivieren so lange dreht, wie die Aktion im Gang ist. Meinen Lösungsansatz dazu möchte ich euch hier nicht vorenthalten.

swift_guru_rotateAls erstes erstellen wir uns hierzu eine kleine Extension für UIView, welche die Rotation übernimmt und auch wieder stoppen kann.

Wir nennen sie am besten UIViewExtension.swift mit folgendem Inhalt:

Die Methode rotateStart erstellt eine Animation, welche die View um 360° dreht und die endlos fortgeführt wird. In rotateStop wird diese Animation dann manuell wieder entfernt. Ohne die beiden Zuweisungen  removedOnCompletion=false und cumulative=true sowie das setzen von repeatCount auf Float.infinity (entspricht HUGE_VALF) würde die Animation nach der Ausführung automatisch beendet und entfernt.

In unserem ViewController definieren wir nun das Bild:

Beim Klicken auf den Button tauschen wir diesen nun gegen die ImageView aus und starten die Animation:

Damit unser ursprünglicher Button nicht verlorengeht, sollte wir die normalerweise schwache Referenz (weak) im IBOutlet „stärken“:

Nach Abschluss der Aktion können wir die Animation nun beenden und den Button wieder herstellen:

Viel Spaß beim Rotieren!