ターゲット効果:アニメーションボタンをクリックした後、各カードが回転し、画面の上半分の位置に広がり、初期位置に戻ります。 Lol Male Knifeのスキルアニメーションのように:)
1:カードオブジェクトを作成します
_ in _ in 0 ... 49 {let cardset = uiimageview(image:uiimage(named: "cardbacklandscape"))self.view.addsubview(cardset)cardset.frame = self.landscapecardback.frame self.cardsetlist.abbend(cardset)}オブジェクト:nil)各カードをuiimageviewとして作成します。これらのカードを後で操作するために、配列を使用して同じ位置に保持します。それを作成した後、このページのオブザーバーにカードセットが作成され、2番目のアニメーションの実行を開始できることをこのページのオブザーバーに伝えるために、ローカル通知を使用してセット作成メッセージを送信します。
2:最初に、アニメーションを開始するボタンのユーザーインタラクションをオフにする必要があります。オンの場合、継続的にクリックすると毎回50枚のカードが作成され、プログラムが詰まっているか垂れ下がっています
ここでの遅延時間は、アニメーションの剛性を低下させるためだけにスレッドに遅延時間を追加することです
ループするたびに、対応するサブスクリプトカードオブジェクトに回転アニメーションを追加し、その原点を変更しました。 Uiviewアニメーションでこのアニメーションを実装する前に、各カードにBezier Curveを追加することを考えました。それはより制御可能です。ただし、時間のために、私はuiviewaNimationのみを使用しました。カードに追加された回転アニメーションは、ここで基本的なアニメーションを使用するポップアニメーションライブラリを使用して実装されています。このステップの後、各カードは回転し、異なる位置に広がります。 Delaytimeが終了してローカル通知をトリガーしてShuffleFinishedを送信すると、このページのオブザーバーが次のアニメーションを実行します。つまり、各カードをアニメーションの出発点に復元します。
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( "shufflefinished"、object:nil)} 0のカウントについて... cardrotateanimation.tovalue = cgfloat(m_pi * 2.0)cardrotateanimation.duration = 1 // cardrotateanimation.duration = double(count> 5?count/2:count/10)cardrotateanimation.timingfunction = camediatimingfuntinearear) self.cardsetlist [count] .layer.pop_addanimation(cardrotateanimation、forkey: "cardrotation")self.cardsetlist [count] .frame.origin = cgpointmake(cgfloat(arc4random())%(250-0 + 1) + 0、cgfloat() + 0、cgfloat() + 0、cgfloat() + 74)self.view.layoutifneeded()self.landscapecardback.removefromsuperview()}}}}3:各カードを初期位置に復元し、ボタンタイトルをカード切断状態に設定します。
0のカウント... 49 {uiview.animatewithduration(0.3、animations:{self.cardsetlist [count] .center = self.landscapecardback.center})self.layoutifneeded()} self.shufflebutton.userinteractionenabled = self.shuffton.settton.settton(カードの後にカットする必要があるのは、カードをカットすることです。時間の理由により、その後のアニメーション効果は来週も更新され続けます...
上記は、編集者が紹介したSwift Reshuffleアニメーション効果を実装する方法です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!