2016-08-03 10 views
0

ビデオが表示されたときに再生を一時停止させようとしています。私は別のcalayerやアニメーションとして追加するかどうか、これを行う方法についてはわかりません。ここでは、エクスポートする前にcalayerを追加するときの私のコードです。ですから、アニメーションが起きたときに、ビデオが表示されたら一時停止してから、アニメーションが停止すると再開したいと思います。calayerが表示されたときにビデオを一時停止する方法

let titleLayer = CATextLayer() 
    titleLayer.backgroundColor = NSColor.clearColor().CGColor 
    titleLayer.string = "Dummy text" 
    titleLayer.font = NSFont(name: "Helvetica", size: 28) 
    titleLayer.shadowOpacity = 0.5 
    titleLayer.alignmentMode = kCAAlignmentCenter 
    titleLayer.frame = CGRectMake(0, 50, size.width, size.height/6) 

    let animation: CABasicAnimation = CABasicAnimation(keyPath: "opacity") 
    animation.duration = 0 
    animation.fromValue = Int(1.0) 
    animation.toValue = Int(0.0) 
    animation.beginTime = 5 
    animation.removedOnCompletion = false 
    animation.fillMode = kCAFillModeForwards 
    titleLayer.addAnimation(animation, forKey: "animateOpacity") 

答えて

1

アニメーションをレイヤーに追加する前にビデオを一時停止してから、アニメーションが終了したら再開することができます。アニメーションが終了したときを知るには、オブジェクトをanimationのデリゲートにしてから、animationDidStop:finished:デリゲートメソッドで再生を再開します。

func showTitle() { 
    // configure animation { .. } 
    animation.delegate = self 
    // pause video 
    titleLayer.addAnimation(animation, forKey: "animateOpacity") 
} 

func animationDidStop(anim: CAAnimation, finished flag: Bool) { 
    // play video 
} 
+0

回答ありがとうございました。もう1つの質問です.Avexportsessionを使用してエクスポートするとどうなりますか?QuickTimeの再生が再生されると、アニメーションの時間が一時停止してから再開します。 – spe

+1

@spelそれに 'AVMutableComposition'を使わなければなりません。この質問のコードスニペットは、あなたがやろうとしていることをかなり行っています:http://stackoverflow.com/questions/10887449/black-video-caanimation-and-avfoundation-avassetexportsession – gravicle

関連する問題