Целевой эффект: после нажатия кнопки анимации каждая карта вращается и распространяется в любую позицию в верхней половине экрана и возвращается в начальную позицию. Больше похоже на навык анимации мужского ножа LOL :)
1: создать объект карты
Для _ in 0 ... 49 {let cardset = uiimageview (image: uiimage (ждем: "cardbacklandscape")) self.view.addsubview (cardset) cardset.frame = self.landscapecardback.frame self.cardsetlist.append (cardset)} nsnotificationcenter.defaultcentcrececretcrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrectedcreceatedcreceated ноль)Создайте каждую карту в качестве UIImageView. Чтобы работать с этими картами позже, я использую массив, чтобы удерживать их в том же положении. После его создания я отправляю сообщение SetCreate, используя локальное уведомление, чтобы сообщить наблюдателю этой страницы, что набор карт был создан, и может начать выполнять вторую анимацию.
2: Во -первых, вам нужно отключить взаимодействие с пользователем кнопки, которая запускает анимацию. Если он включен, нажатие непрерывно будет создавать 50 карт каждый раз, в результате чего программа застряла или даже висела
Время задержки здесь состоит в том, чтобы добавить время задержки в поток, чтобы сделать анимацию менее жесткой
Каждый раз, когда я зацикливался, чтобы добавить анимацию вращения в соответствующий объект карты индекса и менял его происхождение. Прежде чем я внедрил эту анимацию с помощью анимации Uiview, я подумал о добавлении кривой Bezier к каждой карте. Это было бы более управляемо. Однако из -за времени я использовал только Uiviewanimation. Анимация ротации, добавленная на карту, реализована с использованием библиотеки POP Animation, которая использует базовую анимацию здесь. После этого шага каждая карта будет вращаться и распространяться на разные положения. Когда время задержки заканчивается и запускает локальное уведомление, чтобы отправить Shufflefinefine, наблюдатель этой страницы выполнит следующую анимацию, то есть восстановить каждую карту в отправную точку анимации.
Func shuffletheset () {self.shufflebutton.userInterActionEnabled = false let DelayTime = dispatch_time (dispatch_time_now, int64 (0.5 * double (nsec_per_sec))) dispatch_after (dowertime, dispatch_get_main_queue ()) { Nsnotificationcenter.defaultcenter (). PostnotificationName ("ShuffleFined", Object: NIL)} для подсчета в 0 ... 49 {uiview.animateWithDuration (0,3, анимации: {Let CardrotateAnimation = Popbasicanimation (PropertyNamed: kpoplayertation) cardRoateAnimation. cardrotateanimation.tovalue = cgfloat (m_pi * 2.0) cardrotateanimation.duration = 1 // cardrotateanimation.duration = двойной (count> 5? count/2: count/10) cardrotateanimation.timingfunction = camediatimingfunct self.cardsetlist [count] .layer.pop_addanimation (cardrotateanimation, forkey: «cardrotation») self.cardsetlist [count] .frame.origin = cgpointmake (cgfloat (arc4random ()) % (250 - 0 + 1). self.view.layoutifneeded () self.landscapecardback.removefromsuperview ()})}}}}}3: Восстановите каждую карту в начальную позицию и установите заголовок кнопки в состояние резки карты.
Подсчет в 0 ... 49 {uiview.animatewithduration (0.3, анимация: {self.cardsetlist [count] .center = self.landscapecardback.center}) self.view.layoutifneeded ()} self.shufflebutton.userintemanbaled = true.shuffle.shufflebutton.setttle (cutfuflbutton.Необходимость разрезания карт после того, как карта вырезает карты. По причинам времени последующие эффекты анимации будут по -прежнему обновляться на следующей неделе ...
Выше приведено метод реализации эффекта анимации Swift Rehuffle, введенного вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!