Swift 애니메이션 [CoreAnimation 편]
9111 단어 SwiftCoreAnimationiOS
Swift 애니메이션 방법으로는 UIKit 클래스를 사용하는 방법과 사용자 정의가 높은CoreAnimation 클래스를 사용하는 방법이 있습니다.
이번에는 CoreAnimation을 사용하는 방법을 소개합니다.
여기도 참고해주세요.
CoreAnimation
CoreAnimation은 UIKit 애니메이션처럼 직관적이지 않고 속성 설정에 따라 애니메이션을 상세하게 설정할 수 있습니다.따라서 UIKit 때보다 어렵지만 가볍고 섬세한 애니메이션을 만들 수 있다.
애니메이션을 구현하기 위한 두 가지 기본 CoreAnimation 코스
CABasicAnimation
CABAsicAnimation 클래스는 애니메이션 속성 변경 전과 후의 간격을 설정하여 애니메이션하는 클래스입니다.
예를 들어, 뷰의 필렛 크기를 변경하는 애니메이션은 이러한 느낌입니다.
func startCornerRadiusAnimation()
{
// cornerRadiusを変更するアニメーション
var cornerRadiusAnimation = CABasicAnimation(keyPath: "cornerRadius")
// cornerRadius を 0 -> 100 に変化させるよう設定
cornerRadiusAnimation.fromValue = 0
cornerRadiusAnimation.toValue = 100
// アニメーション
cornerRadiusAnimation.duration = 2.0
// アニメーションが終了した時の状態を維持する
cornerRadiusAnimation.removedOnCompletion = false
cornerRadiusAnimation.fillMode = kCAFillModeForwards
// アニメーションが終了したらanimationDidStopを呼び出す
cornerRadiusAnimation.delegate = self
// アニメーションの追加
animationView.layer.addAnimation(cornerRadiusAnimation, forKey: "cornerRadiusAnimation")
}
CAAnimationGroup
CAAnimation Group은 여러 애니메이션을 동시에 설정하는 클래스입니다.예를 들어, 뷰의 크기, 변형 및 회전을 애니메이션으로 조정할 수 있습니다.
func startCornerRadiusAndSizeAnimation()
{
// 角丸を変化させるアニメーション
var cornerRadiusAnimation:CABasicAnimation = CABasicAnimation(keyPath: "cornerRadius")
cornerRadiusAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
cornerRadiusAnimation.fromValue = 0
cornerRadiusAnimation.toValue = 150
// サイズを変化させるアニメーション
var sizeAnimation:CABasicAnimation = CABasicAnimation(keyPath: "bounds.size")
sizeAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
sizeAnimation.fromValue = NSValue(CGSize:CGSizeMake(100, 100))
sizeAnimation.toValue = NSValue(CGSize:CGSizeMake(300, 300))
// 角丸アニメーションとサイズアニメーションをグループとして登録
var animationGroup:CAAnimationGroup = CAAnimationGroup()
animationGroup.setValue("group-animation1", forKey: "animationName")
animationGroup.animations = [cornerRadiusAnimation, sizeAnimation]
animationGroup.duration = 2.0
animationGroup.delegate = self
// アニメーションが終了した時の状態を維持する
animationGroup.removedOnCompletion = false
animationGroup.fillMode = kCAFillModeForwards
// アニメーショングループの追加
animationView.layer.addAnimation(animationGroup, forKey: "group-animation")
}
그 외에도 몇 개의 코어 애니메이션 반이 있다.
최후
CoreAnimation 등급의 애니메이션을 사용하여 UIKit 등급에서 제공하는 애니메이션이 할 수 없는 layer 속성의 애니메이션 등 섬세한 동작을 사용할 수 있습니다.
또한 여러 개의 애니메이션을 동시에 제작하거나 설치된 애니메이션이 많은 상황에서 코드를 정리해서 쓸 수 있다.
Reference
이 문제에 관하여(Swift 애니메이션 [CoreAnimation 편]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/h_nagami/items/0ad8f8ef5bc23de21e1e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)