대상 효과 : 애니메이션 버튼을 클릭 한 후 각 카드는 회전하고 화면 상단의 모든 위치로 퍼져 초기 위치로 돌아갑니다. LOL 남성 나이프의 기술 애니메이션과 비슷합니다.
1 : 카드 객체를 만듭니다
for _ in 0 ... 49 {let cardset = uiimageview (image : uiimage ( "cardbacklandscape") self.view.addsubview (cardset) cardset.frame = self.landscapecardback.frame self.cardsetlist.append (cardset)} nsnoticiticationcardback.frame self.cardsetlist (cardset)} nsnoticiticationcardback.frame self.defaultcenter (). NIL)각 카드를 uiimageview로 만듭니다. 나중에이 카드를 운영하기 위해 배열을 사용하여 동일한 위치에 보관합니다. 그것을 만든 후, 나는 로컬 알림을 사용하여 설정된 메시지를 보내서이 페이지의 관찰자에게 카드 세트가 만들어졌으며 두 번째 애니메이션을 실행할 수 있음을 알려줍니다.
2 : 먼저 애니메이션을 시작하는 버튼의 사용자 상호 작용을 끄려면됩니다. 켜져있는 경우 지속적으로 클릭하면 매번 50 장의 카드를 생성하여 프로그램이 붙어 있거나 심지어 매달려 있습니다.
여기서 지연 시간은 애니메이션을 덜 단단하게 만들기 위해 스레드에 지연 시간을 추가하는 것입니다.
해당 첨자 카드 객체에 회전 애니메이션을 추가하고 원점을 변경할 때마다. Uiview 애니메이션 으로이 애니메이션을 구현하기 전에 각 카드에 Bezier 곡선을 추가하는 것에 대해 생각했습니다. 그것은 더 통제 가능할 것입니다. 그러나 시간 때문에 나는 uiviewanimation 만 사용했습니다. 카드에 추가 된 회전 애니메이션은 여기에서 기본 애니메이션을 사용하는 팝 애니메이션 라이브러리를 사용하여 구현됩니다. 이 단계 후에는 각 카드가 회전하여 다른 위치로 퍼집니다. Delaytime이 종료되고 로컬 알림을 셔플 피니쉬를 보내도록 트리거하면이 페이지의 관찰자가 다음 애니메이션을 실행합니다. 즉, 각 카드를 애니메이션의 시작점으로 복원합니다.
FUNC SHUFFETHETESET () {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 ... 49 {UIView.animateWithDuration (0.3, Animations : {PropertyNamed : KpoplayErrotation) CardrateAnimation. cardrotateAnimation.tovalue = cgfloat (m_pi * 2.0) cardrotateanimation.duration = 1 // cardrotateAnimation.duration = double (count> 5? count/2 : count/10) cardrotateAnimation.timingFunction = CamediatimingFunction (이름 : kcamediatimingfuncentionear). self.cardsetlist [count] .layer.pop_addanimation (cardrotateAnimation, forkey : "cardrotation") self.cardsetlist [count] .frame.origin = cgpointmake (cgfloat (arc4random (250-0 + 1) + 0, cgfloat (arc4random (300)) % (300 -74). 74) 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.userinteractionenabled = true selfbutton.settittle ( "컷 카드": forectale).카드 후에 카드를 잘라야 할 필요성은 카드를 자르는 것입니다. 시간의 이유로 인해 후속 애니메이션 효과는 다음 주에 계속 업데이트 될 것입니다 ...
위의 것은 편집자가 소개 한 신속한 개편 애니메이션 효과를 구현하는 방법입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!