objective-c - 使用 fadeIn/fadeOut CABasicAnimation 的闪烁效果

标签 objective-c swift calayer cabasicanimation caanimation

我正在尝试使图层动画无限闪烁(淡入和淡出,直到 isBlinking 属性切换为 false),我的尝试如下,但它似乎无法正常工作,我可以观察一下每隔几次眨眼就会出现一个故障。当属性设置为 false 时,我还希望图层淡入完全不透明,这样就不会有任何突然的不透明度变化,但出于某种原因,我的代码也无法做到这一点。

var isBlinking: Bool = false {
    didSet {
        if !isBlinking {
            layer.removeAllAnimations()
            let fadeIn = CABasicAnimation(keyPath: "opacity")
            fadeIn.toValue = 1
            fadeIn.duration = 1
            layer.addAnimation(fadeIn, forKey: nil)
            return
        }

        let fadeOut = CABasicAnimation(keyPath: "opacity")
        fadeOut.fromValue = 1
        fadeOut.toValue = 0.1
        fadeOut.duration = 1

        let fadeIn = CABasicAnimation(keyPath: "opacity")
        fadeIn.fromValue = 0.1
        fadeIn.toValue = 1
        fadeIn.duration = 1
        fadeIn.beginTime = 1

        let group = CAAnimationGroup()
        group.duration = 2
        group.repeatCount = Float.infinity
        group.animations = [fadeOut, fadeIn]

        layer.addAnimation(group, forKey: nil)
    }
}

如果有任何关于 swift 或 obj-c 的建议或意见,我将不胜感激。谢谢!

最佳答案

你的 fromValues 和 toValues 需要是 NSNumber

    fadeIn.fromValue = NSNumber(float: 0.1)
    fadeIn.toValue = NSNumber(float: 1.0)

关于objective-c - 使用 fadeIn/fadeOut CABasicAnimation 的闪烁效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33433711/

相关文章:

ios - UIScrollView 在 subview 内部触摸时垂直滚动

iphone - 从 objective-c 中包含 html 标签的字符串中提取内容

ios - 打开 Swift Playground 书

ios - 如何在设定的时间段内运行一个 Action ?

ios - 如何在 Swift 中保存 View 及其 subview 的屏幕截图?

ios - 在选项卡栏 Controller 中将数据从一个 View 传递到另一个 View 未按时传递

ios - 在 Objective-C 中使用枚举?

swift - 为什么这个 guard 声明会给我一个错误?

iphone - 我如何更改 Core Graphics 中 CALayer 的填充颜色?

macos - Cocoa 中的 CALayer 随机排序 (Mac OS)