SwiftでsetAnimationDidStopSelectorを使う
Swiftだと、どういう風に書いて良いのか分からないので調べてみた。
検索して見つかったのはちゃんと動かなくて、結果的にこうなった。
// ボタンを押したとか、そういうの
func hoge() {
UIView.beginAnimations( nil, context: nil )
UIView.setAnimationDelegate( self )
UIView.setAnimationDidStopSelector( Selector("myAnimationDidStop:finished:context:") )
// プロパティを変更してアニメーションさせる
UIView.commitAnimations()
}
func myAnimationDidStop(animationID: String?, finished: NSNumber, context: UnsafeMutablePointer<Void>) {
if animationID != nil {
println( "myAnimationDidStop animationID: \(animationID!), finished: \(finished.boolValue)" )
}
else {
println( "myAnimationDidStop finished: \(finished.boolValue)" )
}
}
これが正しいのか分からないけど、とりあえずそれっぽく動いた。
ちなみに、setAnimationDelegateだけ呼んで、
override func animationDidStop(anim: CAAnimation!, finished flag: Bool) {
println( "animationDidStop finished: \(flag)" )
}
を書くと、flagの値がfalseになる・・・、なんで?
func myAnimationDidStop(animationID: String?, finished: Bool, context: UnsafeMutablePointer<Void>) {
//...
}
って書くと、finishedがfalseになる。
Swiftってほんと、難しいですね!
おしまい。
Leave a Comment