#概要
アニメーションで動く円グラフを作成したくて、
Objective-CのライブラリなどソースレビューしていましたがCALayerのサブクラスでは
自分が持つプロパティを変更されたタイミングでactionForKeyメソッドが呼ばれる。
今回はカスタムクラスとして、円グラフの開始角度/終了角度(それぞれstartAngle/endAngle)プロパティを持たせており、これらを親ビューなどから変更するとアニメーションされるらしい
//CALayerのサブクラス内
dynamic var startAngle: CGFloat = 0
dynamic var endAngle: CGFloat = 0
func makeAnimationForKey(key: String) -> CABasicAnimation{
var anim: CABasicAnimation = CABasicAnimation()
anim.keyPath = key
anim.fromValue = presentationLayer().valueForKey(key)
anim.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
anim.duration = 0.5
return anim
}
override func actionForKey(event: String!) -> CAAction! {
if event == "startAngle" || event == "endAngle"{
return makeAnimationForKey(event)
}
return super.actionForKey(event)
}
#プロパティの変更が認識されない
actionForKeyにstartAngle/endAngleのイベント文字が渡ってくるはずが
上記のようにSwiftに書き直してみると渡って来ない
おそらくKeyValueObserving的な問題のような気がするけど、そうなると
Swiftでは無理なのでしょうか
どなたかご存知の方はいらっしゃいませんか??