Effet cible: après avoir cliqué sur le bouton d'animation, chaque carte tourne et se propage à n'importe quelle position dans la moitié supérieure de l'écran et revient à la position initiale. Plus comme l'animation de compétence du couteau masculin lol :)
1: Créez un objet de carte
Pour _ en 0 ... 49 {let cardset = uiImageView (image: uiImage (nommé: "CardBacklandScape")) selview.addsubView (cardset) cardset.frame = self.landScapecardBackCréez chaque carte comme UIImageView. Afin de faire fonctionner ces cartes plus tard, j'utilise un tableau pour les maintenir dans la même position. Après l'avoir créé, j'envoie un message SetCreated en utilisant une notification locale pour dire à l'observateur de cette page que l'ensemble de cartes a été créé et peut commencer à exécuter la deuxième animation.
2: Tout d'abord, vous devez désactiver l'interaction utilisateur du bouton qui démarre l'animation. S'il est allumé, cliquer en continu créera 50 cartes à chaque fois, ce qui entraînera le respect du programme ou même suspendu
Le temps de retard ici est d'ajouter un temps de retard au fil juste pour rendre l'animation moins rigide
Chaque fois que j'ai bouclé pour ajouter une animation de rotation à l'objet de carte d'indice correspondant et changé son origine. Avant d'implémenter cette animation avec UIView Animation, j'ai pensé à ajouter une courbe Bezier à chaque carte. Ce serait plus contrôlable. Cependant, en raison du temps, je n'ai utilisé que UIViewanimation. L'animation de rotation ajoutée à la carte est implémentée à l'aide de la bibliothèque d'animation pop, qui utilise l'animation de base ici. Après cette étape, chaque carte sera tournée et se propage à différentes positions. Lorsque DelayTime se termine et déclenche la notification locale pour envoyer un shufflefini, l'observateur de cette page exécutera la prochaine animation, c'est-à-dire restaurer chaque carte au point de départ de l'animation.
func shuffletheset () {self.shufflebutton.UserInterActionNabled = false let delaytime = dispatch_time (dissatch_time_now, int64 (0.5 * double (nsec_per_sec))) dissaction_after (delaytime, dispatch_get_main_queue ()) {{ NsnotificationCenter.defaultCenter (). PostNotificationName ("ShuffleFinished", objet: nil)} pour compter en 0 ... 49 {uiView.animateWithDuration (0.3, Animations: {LET CARDROTATEANIMation = popbasicanation (PropertyNamed: KpoPlayErrotation) CardrotateAniMation.FromValie = 0 cardrotateanimation.tovalue = cgfloat (m_pi * 2.0) cardrotateanimation.duration = 1 // cardrotateanimation.duration = double (count> 5? Count / 2: count / 10) cardrotateanimation.TimingFunction = camediatingFunction (nom: kcaDidiatingFunctionlinear) self.cardsetList [count] .layer.pop_addanimation (cardrotateanimation, forkey: "cardrotation") self.cardetList [count] .frame.origin = cgpointmake (cgfloat (arc4random ())% (250 - 0 + 1) + 0, cgfloat (arc4random ())% (300 - + 1) + 1) 74) self.view.layoutifneed () self.landscapecardback.removeFromsperView ()})}}3: Restaurez chaque carte à la position initiale et définissez le titre du bouton sur l'état de coupe de la carte.
Pour le nombre de 0 ... 49 {uiView.animateWithDuration (0.3, Animations: {self.cardsetList [Count] .Center = self.landscapecardback.center}) selview.view.latifneeded ()} self.shufflebutton.UserInterActionNabled = True Self.Shufflebutton.SetTitle ("Cut Card", pour .normal)La nécessité de couper les cartes après la carte est de couper les cartes. Pour des raisons de temps, les effets d'animation suivants continueront d'être mis à jour la semaine prochaine ...
Ce qui précède est la méthode de mise en œuvre de l'effet d'animation de remaniement Swift qui vous est présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!