macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

startWhenAnimation:reachesProgress:

INDEX>AppKit>NSAnimation

あるアニメーションの進捗がある地点まで来た時に別のアニメーションをスタートさせます

Objective-C

- (void)startWhenAnimation:(NSAnimation *)animation
           reachesProgress:(NSAnimationProgress)startProgress

Swift

func startWhenAnimation(_ animation: NSAnimation,
        reachesProgress startProgress: NSAnimationProgress)

解説

あるアニメーションの進捗がある地点まで来た時に別のアニメーションをスタートさせます

返り値

なし

引数

animation
アニメーション
Objective-C

NSAnimation *

Swift

NSAnimation

reachesProgress
Objective-C

NSAnimationProgress

Swift

NSAnimationProgress

フレームワーク

ApplicationKit

クラス

NSAnimation

使用可能

10.4

関連記事(外部サイト)

例文

Objective-C

Swift

   //アニメーション
    func animation(animation: NSAnimation, didReachProgressMark progress: NSAnimationProgress) {
        
        if (animation == theAnim001?){
            NSLog("theAnim001")
        }
        if (animation == theAnim002?){
            NSLog("theAnim002")
        }
        if (animation == theAnim003?){
            NSLog("theAnim003")
            var returnValue = theAnim003.runLoopModesForAnimating?
            if ((returnValue) != nil){
                for mode : AnyObject in returnValue! {
                    NSLog("!! %@",mode as NSString)
                }
            }
        }
        if (animation == theAnim004?){
            NSLog("theAnim004")
        }
        if (animation == theAnim005?){
            NSLog("theAnim005")
        }
        if (animation == theAnim006?){
            NSLog("theAnim006")
        }
        if (animation == theAnim007?){
            NSLog("theAnim007")
        }
        if (animation == theAnim008?){
            NSLog("theAnim008")
        }
        if (animation == theAnim008?){
            NSLog("theAnim008")
        }
        if (animation == theAnim009?){
            NSLog("theAnim009 %.1f",theAnim009.currentProgress)
            if (theAnim009.currentProgress > 0.5){
                theAnim009.stopAnimation()
                NSLog("end")
            }
        }
        if (animation == theAnim010?){
            NSLog("theAnim010 %.1f",theAnim010.currentProgress)
            if (theAnim010.currentProgress > 0.5){
                theAnim010.stopAnimation()
                NSLog("end")
            }
        }
        if (animation == theAnim011?){
            NSLog("theAnim011 %.2f %.2f ",theAnim011.currentValue,progress)
            if (theAnim011.currentProgress > 0.8){
                theAnim011.stopAnimation()
                NSLog("end")
            }
        }
        if (animation == theAnim012?){
            NSLog("theAnim012 %.2f",theAnim012.currentValue,progress)
        }
        if (animation == theAnim012sub?){
            NSLog("theAnim012sub %.2f",theAnim012sub.currentValue,progress)
        }
    }
    //NSAnimation startWhenAnimation:reachesProgress
    @IBAction func function012(sender: AnyObject) {
        //NSAnimationProgress
        var progMarks : [NSAnimationProgress] =  [
            0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5,
            0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0  ]
        var i :Int
        var count :Int = 20
        
        //アニメーション設定
        theAnim012 = NSAnimation(duration: 10.0, animationCurve: NSAnimationCurve.EaseInOut)
        
        theAnim012.frameRate = 20.0
        theAnim012.delegate = self
        
        theAnim012.animationBlockingMode = NSAnimationBlockingMode.Blocking
        //theAnim012.animationBlockingMode = NSAnimationBlockingMode.Nonblocking
        
        theAnim012.animationCurve = NSAnimationCurve.EaseInOut
        theAnim012.duration = 5.0
        var mark:NSAnimationProgress = 0.3
        theAnim012.addProgressMark(mark)
        
        //
        theAnim012sub = NSAnimation(duration: 10.0, animationCurve: NSAnimationCurve.EaseInOut)
        theAnim012sub.frameRate = 20.0
        theAnim012sub.delegate = self
        theAnim012sub.animationBlockingMode = NSAnimationBlockingMode.Blocking
        //theAnim012.animationBlockingMode = NSAnimationBlockingMode.Nonblocking
        
        theAnim012sub.animationCurve = NSAnimationCurve.EaseInOut
        theAnim012sub.duration = 5.0
        
        
        
        //登録
        
        for (i = 0 ; i<count ; i++){
            theAnim012.addProgressMark(progMarks[i])
            //NSLog("theAnim012 %f",progMarks[i])
        }
        for (i = 0 ; i<count ; i++){
            theAnim012sub.addProgressMark(progMarks[i])
            //NSLog("theAnim012sub %f",progMarks[i])
        }
        dispatch_async(dispatch_get_main_queue()) {
            //
            self.theAnim012sub.startWhenAnimation(self.theAnim012,reachesProgress:mark)
            
            self.theAnim012.startAnimation()
            //self.theAnim012sub.startAnimation()
        }
    }

編集時バージョン

10.10.3
Swift1.2