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