Zieleffekt: Nach dem Klicken auf die Animationsschaltfläche dreht sich jede Karte und spreizt an eine beliebige Position in der oberen Hälfte des Bildschirms und kehrt in die Anfangsposition zurück. Eher wie die Fähigkeitsanimation des lol männlichen Messers :)
1: Erstellen Sie ein Kartenobjekt
Für _ in 0 ... 49 {let CardSet = UiimageView (Bild: UIImage (genannt: "Cardbacklandscape") self.view.addsubview (Cardset) Cardset.frame = self.landscapeCardback.Frame self.Cardsetlist.Append (cardset)}} nsnotificationCenter.DefaugCenter.DefaultCenter. NIL)Erstellen Sie jede Karte als UIImageview. Um diese Karten später zu betreiben, benutze ich ein Array, um sie in derselben Position zu halten. Nach dem Erstellen sende ich eine setCreated -Nachricht mit einer lokalen Benachrichtigung, um dem Beobachter dieser Seite mitzuteilen, dass der Kartensatz erstellt wurde und die zweite Animation ausführen kann.
2: Zunächst müssen Sie die Benutzerinteraktion der Schaltfläche ausschalten, mit der die Animation gestartet wird. Wenn es eingeschaltet ist, erstellt das Klicken auf kontinuierlich 50 Karten, was dazu führt, dass das Programm steckt oder sogar hängt
Die Delaytime hier besteht darin, dem Thread eine Verzögerungszeit hinzuzufügen, um die Animation weniger starr zu machen
Jedes Mal, wenn ich dem entsprechenden Einweiskartenobjekt eine Rotationsanimation hinzufügte, und deren Herkunft änderte. Bevor ich diese Animation mit UIView -Animation implementierte, dachte ich darüber nach, jeder Karte eine Bezier -Kurve hinzuzufügen. Das wäre kontrollierbarer. Aus der Zeit habe ich jedoch nur UiviewAnimation verwendet. Die zur Karte hinzugefügte Rotationsanimation wird mit der Pop -Animationsbibliothek implementiert, die hier grundlegende Animation verwendet. Nach diesem Schritt wird jede Karte gedreht und auf verschiedene Positionen ausgebaut. Wenn Delaytime endet und die lokale Benachrichtigung zum Senden von ShuffleFineSteures auslöst, führt der Beobachter dieser Seite die nächste Animation aus, dh jede Karte wieder zum Startpunkt der Animation.
func shuffleTheSet() { self.shuffleButton.userInteractionEnabled = false let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC))) dispatch_after(delayTime, dispatch_get_main_queue()) { NsnotificationCenter.defaultCenter (). PostnotificationName ("shuffleFineished", Objekt: nil)} Für die Anzahl in 0 ... 49 {Uiview.AnimateWithDuration (0,3, Animationen: {let CardRotateanimation = popbasicanimation (Eigenschaft) cardRotateanimation.tovalue = cgfloat (m_pi * 2.0) cardRotateanimation self.cardsetList [count] .layer.pop_addanimation (CardRotateanimation, Forkey: "CardRotation") Self.CardsetList [Count] .Frame.ORIGIN = CGPointmake (cgfloat (arc4random () % (250 - 0 + 1) + 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) 1) (ark4random ()- % (300 - 300 - + 1) 1) 1) 1) 1) 1) 1) 1) 1) (ark4random ()- % (300 - 74 + 1) 1) + 1) (arc4random ()- % (300 - 74 + 1) 1 1) 1) 1) 1) (ark4random) self.view.layoutifNeed () self.landscapecardback.removeFromsuperView ()})}}}3: Stellen Sie jede Karte in die Anfangsposition wieder und setzen Sie den Tastentitel auf den Kartenschneidstatus.
Für die Anzahl in 0 ... 49 {uiview.animateWithDuration (0.3, Animationen: {self.cardsetList [count] .center = self.landscapecardback.Center}) self.view.layoutifNeed ()} self.shuffleButton.userinteractaNabled = trued.shuffleBtton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.Setton.SETTON.SETTONE -Die Notwendigkeit, nach der Karte Karten zu schneiden, besteht darin, Karten zu schneiden. Aus zeitlichen Gründen werden die nachfolgenden Animationseffekte nächste Woche weiterhin aktualisiert ...
Die oben genannte Methode zur Implementierung des Swift -Umreshuffle -Animationseffekts, der Ihnen vom Editor vorgelegt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!