[SWIFT] IOS 애니메이션 효과 - 3
continue 버튼을 누르면 로그인 화면으로 넘어가는 예시
실행화면
- visual effect view의 경우 아래와 같이 추가가능
1override func viewWillAppear(_ animated: Bool) {2 super.viewWillAppear(animated)34 backgroundImage.alpha = 0.05 continueButton.alpha = 0.06 message.alpha = 0.078 }
처음에 로고를 제외한 모든 내용을 가려 준 후
1UIView.animate(withDuration: 1, delay: 0.0, options: [], animations: {23 //display background image4 self.backgroundImage.alpha = 1.056 }, completion:nil)7
백그라운드를 애니메이션을 통해 만들어줌
1UIView.animate(withDuration: 2.0, animations: {23 //display button4 self.continueButton.alpha = 1.056 }, completion:nil)
버튼의 경우 조금 더 느리게 만들어줌
1UIView.animate(withDuration: 2.0, delay:0.5, usingSpringWithDamping: 0.6, initialSpringVelocity: 0.0,options:[], animations: {23 //display button4 self.continueButton.alpha = 1.056 }, completion:nil)7
버튼에 대한 애니메이션코드
SpringWithDamping은 위로 살짝 올라갔다가 돌아오는 효과를 Spring Velocity는 속도를 결정한다.
1 func marketingMessages(_ index: Int) {2 var index = index34 let message = self.messages[index]5 self.message.text = message67 //to reposition label8 self.message.center.y += 30.0910 //애니메이션을 계속 실행시킨다.11 UIView.animateKeyframes(withDuration: 10.0, delay: 0.0, options: [], animations: {121314 //라벨을 보이게한 후15 UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.10, animations: {16 self.message.alpha = 0.517 })181920 //애니메이션을 Bountce를 준 후 사라지게함21 UIView.addKeyframe(withRelativeStartTime: 0.90, relativeDuration: 0.05, animations: {22 self.keyframeAnimation()23 })242526 }, completion: {_ in2728 //다시 콜백함수로 해당 텍스트를 교체해준다.29 if index == self.messages.count-1{3031 index = 03233 }else{34 index += 135 }3637 self.marketingMessages(index)38 })3940 }4142 func keyframeAnimation() {4344 UIView.animate(withDuration: 1.0, delay: 0.0,usingSpringWithDamping: 0.7, initialSpringVelocity: 0.0, options: [.curveEaseOut], animations: {4546 self.message.center.y -= 30.04748 }, completion: nil)4950 }51