Efecto de destino: después de hacer clic en el botón de animación, cada tarjeta gira y se extiende a cualquier posición en la mitad superior de la pantalla y regresa a la posición inicial. Más como la animación de habilidad del cuchillo macho lol :)
1: crear un objeto de tarjeta
Para _ en 0 ... 49 {let cardset = uiiMageView (imagen: uiImage (nombrado: "cardbacklandscape")) self.view.addsubView (cardset) cardset.frame = self.landscapeCardback.frame self.CardSetList.append (cardset)} nsnotificationCenterCenterCententerer (). nulo)Cree cada tarjeta como UIIMageView. Para operar estas tarjetas más tarde, uso una matriz para mantenerlas en la misma posición. Después de crearlo, envío un mensaje SetCreated utilizando una notificación local para decirle al observador de esta página que el conjunto de tarjetas ha sido creado y puede comenzar a ejecutar la segunda animación.
2: Primero, debe desactivar la interacción del usuario del botón que inicia la animación. Si está activado, hacer clic continuamente creará 50 tarjetas cada vez, lo que resulta en que el programa se atasque o incluso cuelgue
El tiempo de retraso aquí es agregar un tiempo de retraso al hilo solo para hacer que la animación sea menos rígida
Cada vez que encajé para agregar una animación de rotación al objeto de tarjeta de subíndice correspondiente y cambié su origen. Antes de implementar esta animación con UIView Animation, pensé en agregar una curva Bezier a cada tarjeta. Eso sería más controlable. Sin embargo, debido al tiempo, solo usé uiviewanimation. La animación de rotación agregada a la tarjeta se implementa utilizando la biblioteca de animación POP, que utiliza la animación básica aquí. Después de este paso, cada tarjeta se girará y se extenderá a diferentes posiciones. Cuando el tiempo de retraso termina y activa la notificación local para enviar ShuffleFinished, el observador de esta página ejecutará la próxima animación, es decir, restaurar cada tarjeta al punto de partida de la animación.
Func shuffletheset () {self.shuffleButton.userInterActive = false LET demandarTime = Dispatch_time (Dispatch_time_now, int64 (0.5 * double (nsec_per_sec))) seaTting_after (retrasar, disipta_get_main_queue ()) {nsnotificationcenterer.defaulterer (). nil)} para el recuento en 0 ... 49 {uiview.animateWithDuration (0.3, animaciones: {let cardroTateAnimation = popBasicAnimation (PropertyNamed: kpoplayerrotation) cardroTateAnimation.fromValue = 0 cardroTteAnimation.Tovocalue = cgfloat (m_pi * 2.0) cardrotateTreatate cardroTateAnimation.duration = double (Count> 5? Count/2: Count/10) CardroTateAnimation.TrimingFunction = CamediateMingFunction (nombre: KcamediatimingFunctionLinear) Self.CardSetList [Count] .Layer.Pop_Addanimation (CardRotateAnimation, "Cardrotation") self.CardSetList [Count] .Frame.origin = CGPointMake (cgfloat (arc4random ()) % (250 - 0 + 1) + 0, cgfloat (arc4random ()) % (300 - 74 + 1) + 74) self.view.lalautifneeded () self.landscapeCardback.RemoveFremoveffRemove (). }3: Restaurar cada tarjeta a la posición inicial y configure el título del botón en el estado de corte de la tarjeta.
Para contar en 0 ... 49 {uiview.animateWithDuration (0.3, animaciones: {self.cardsetList [count] .center = self.landscapeCardback.center}) self.view.layoutifneeded ()} self.shuffleButton.UserInterActionSeBiled = True Self.shuffleButton.settitle ("Cut Card", ForState).La necesidad de que se corten las tarjetas después de la tarjeta es cortar tarjetas. Debido a las razones de tiempo, los efectos de animación posteriores continuarán actualizándose la próxima semana ...
Lo anterior es el método para implementar el efecto de animación de reorganización de Swift introducido por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!