Swift 애니메이션 [CoreAnimation 편]

9111 단어 SwiftCoreAnimationiOS
Swift에 애니메이션을 설치하는 절차는 다음과 같습니다.
Swift 애니메이션 방법으로는 UIKit 클래스를 사용하는 방법과 사용자 정의가 높은CoreAnimation 클래스를 사용하는 방법이 있습니다.
이번에는 CoreAnimation을 사용하는 방법을 소개합니다.
여기도 참고해주세요.
  • iOS 애플리케이션 초보자가 기억하고 싶은 10개의 UI 클래스
  • 베스트셀러 iOS 앱을 만들 수 있는 책 8가지를 추천합니다.
  • Swift로 View 조작
  • Swift에서 ViewController 사용
  • Swift에 제스처 추가
  • CoreAnimation


    CoreAnimation은 UIKit 애니메이션처럼 직관적이지 않고 속성 설정에 따라 애니메이션을 상세하게 설정할 수 있습니다.따라서 UIKit 때보다 어렵지만 가볍고 섬세한 애니메이션을 만들 수 있다.
    애니메이션을 구현하기 위한 두 가지 기본 CoreAnimation 코스
  • CABasicAnimation
  • CAAnimationGroup
  • 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")
        }
    

    그 외에도 몇 개의 코어 애니메이션 반이 있다.
  • CAPropetyAnimation
  • CATransition
  • CGAffineTransform
  • 최후


    CoreAnimation 등급의 애니메이션을 사용하여 UIKit 등급에서 제공하는 애니메이션이 할 수 없는 layer 속성의 애니메이션 등 섬세한 동작을 사용할 수 있습니다.
    또한 여러 개의 애니메이션을 동시에 제작하거나 설치된 애니메이션이 많은 상황에서 코드를 정리해서 쓸 수 있다.

    좋은 웹페이지 즐겨찾기