Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 淡出卡巴斯基化_Iphone_Swift_Calayer_Cabasicanimation - Fatal编程技术网

Iphone 淡出卡巴斯基化

Iphone 淡出卡巴斯基化,iphone,swift,calayer,cabasicanimation,Iphone,Swift,Calayer,Cabasicanimation,我正在使用一个cabasicanition,它反复地上下缩放CALayer。这意味着动画是自动反转的,重复无限次,其关键路径是transform.scale 我想做的是在某一点“淡出”动画。因此,我不想立即停止它(使用layer.removeAnimationForKey:),但我希望动画能够在一秒钟的时间内顺利删除。我已尝试在CATTransaction块中包装层。移除动画forkey:,并设置其动画持续时间,但这也不起作用 非常感谢您的帮助。这里有一个淡出的示例,在我用AVPlayer播放的

我正在使用一个
cabasicanition
,它反复地上下缩放
CALayer
。这意味着动画是自动反转的,重复无限次,其关键路径是
transform.scale

我想做的是在某一点“淡出”动画。因此,我不想立即停止它(使用
layer.removeAnimationForKey:
),但我希望动画能够在一秒钟的时间内顺利删除。我已尝试在
CATTransaction
块中包装
层。移除动画forkey:
,并设置其
动画持续时间
,但这也不起作用


非常感谢您的帮助。

这里有一个淡出的示例,在我用AVPlayer播放的视频结束时调用淡出

override func viewWillAppear(animated: Bool) {
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.finishedPlaying(_:)), name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem)
}

var fadeOut:CABasicAnimation!

func finishedPlaying(myNotification:NSNotification) {

    self.commsRightNow = commsMode.appleTV.rawValue
    fadeOut = CABasicAnimation(keyPath: "opacity")
    fadeOut.fromValue = 1.0
    fadeOut.toValue = 0.0
    fadeOut.duration = 8.0
    fadeOut.delegate = self
    fadeOut.setValue("video", forKey:"fadeOut")
    fadeOut.removedOnCompletion = false
    fadeOut.fillMode = kCAFillModeForwards
    playerLayer.addAnimation(fadeOut, forKey: nil)
}
您还可以调用下面的方法,在动画完成时执行其他操作。这一个完全删除了AVPlayer对象。注意:淡出键和视频键是用户定义的值,因为您可能需要识别多个动画的开始和停止

override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
    let nameValue = anim.valueForKey("fadeOut") as? String
    if let name = nameValue {
        if (name == "video") {
            playerLayer?.removeFromSuperlayer()


        }
    }
也可以在动画开始时调用此选项以触发

override func animationDidStart(anim: CAAnimation) {
    // Blah Blah
}

这里有一个淡出的例子,当我用AVPlayer播放的视频结束时称为淡出

override func viewWillAppear(animated: Bool) {
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.finishedPlaying(_:)), name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem)
}

var fadeOut:CABasicAnimation!

func finishedPlaying(myNotification:NSNotification) {

    self.commsRightNow = commsMode.appleTV.rawValue
    fadeOut = CABasicAnimation(keyPath: "opacity")
    fadeOut.fromValue = 1.0
    fadeOut.toValue = 0.0
    fadeOut.duration = 8.0
    fadeOut.delegate = self
    fadeOut.setValue("video", forKey:"fadeOut")
    fadeOut.removedOnCompletion = false
    fadeOut.fillMode = kCAFillModeForwards
    playerLayer.addAnimation(fadeOut, forKey: nil)
}
您还可以调用下面的方法,在动画完成时执行其他操作。这一个完全删除了AVPlayer对象。注意:淡出键和视频键是用户定义的值,因为您可能需要识别多个动画的开始和停止

override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
    let nameValue = anim.valueForKey("fadeOut") as? String
    if let name = nameValue {
        if (name == "video") {
            playerLayer?.removeFromSuperlayer()


        }
    }
也可以在动画开始时调用此选项以触发

override func animationDidStart(anim: CAAnimation) {
    // Blah Blah
}

非常感谢。但我不认为这个答案达到了我想要的。我不希望一层被淡出;我希望动画本身被淡出。我的动画将变换的比例从1重复更改为1.5,反之亦然。我想让这个效果平滑地淡出,这样最后的比例是1(默认值)。谢谢。但我不认为这个答案达到了我想要的。我不希望一层被淡出;我希望动画本身被淡出。我的动画将变换的比例从1重复更改为1.5,反之亦然。我希望此效果平滑淡出,以便在结尾处比例为1(默认值)。