CoreAnimation
複雑なアニメーションを実装できる
UIKit以上のアニメーションができるってことかmrsekut.icon 思ってたよりCoreっぽい
UIKitよりCoreなんかよmrsekut.icon アニメーション時間や、アニメーション開始時間なども設定できる
参考
もうすこし柔軟なやつ
これはtransform.scale限定のアニメーションなのか
スケールのアニメーションで重力とか質量とか硬さとかを表現できる
コンストラクタの引数のkeyPathは"transform.scale"以外は取らないの?
重力アニメーション参考
code:swift
animation.mass = 1.0
animation.initialVelocity = 30.0
animation.damping = 3.0
animation.stiffness = 120.0
animation.duration = 10
animation.repeatCount = .infinity
参考
CAKeyframeAnimation
キーフレームアニメーションってなに?
CATransaction
終了の検知のために使うのか?
アニメーションをグループ化する
複数のアニメーションを並列に動かしたり、
Aが終わったらB、のように逐次実行させたりできる
アニメーションの逐次実行ができた
code:swift
// 長方形を作成
let rec = SCNNode(geometry: SCNPlane(width: 0.3, height: 0.3))
// 拡大するアニメーション
let scaleAnim = CASpringAnimation(keyPath: "transform.scale")
scaleAnim.fromValue = SCNVector4(0.0, 0.0, 0.0, 0.0)
scaleAnim.toValue = SCNVector4(1.0, 1.0, 1.0, 0.0)
scaleAnim.duration = 2.0 // 2sのアニメーション
// 伸びるアニメーション
let expandAnim = CASpringAnimation(keyPath: "transform.scale")
expandAnim.fromValue = SCNVector4(1.0, 1.0, 1.0, 0.0)
expandAnim.toValue = SCNVector4(1.0, 2.0, 1.0, 0.0)
expandAnim.beginTime = 2.0 // 開始点を2s後にする
expandAnim.duration = 2.0
// グループを作成
let group = CAAnimationGroup()
group.setValue("g", forKey: "animationName")
group.duration = 4.0 // グループ全体のアニメーション時間
group.fillMode = CAMediaTimingFillMode.forwards
group.isRemovedOnCompletion = false
rec.addAnimation(group, forKey: "g")
blueView.layer.add(rec, forKey: nil)
forKeyはなに?
参考
参考
がちっぽいやつ
よんでない