如何为NSTextField的textColor设置动画?

时间:2017-06-25 00:26:17

标签: swift cocoa animation nstextfield

我有一个NSTextField作为时钟的显示器。在任何给定时间,它都会显示如下内容:10:42:22

窗口的背景会改变颜色。有时它是浅色背景,有时它是黑暗的。现在,文字颜色发生变化,因此它在背景上可见,但它是即时的。我喜欢它褪色。

当我使用CATransition并设置textColor时,这似乎很有效。但是,它也会淡化文本本身的字符串。想象一下10:42:22交叉淡入10:42:23。我希望字符串能够像数字时钟一样立即改变,而颜色则会顺畅地消失。

我也尝试过:

animator().textColor = someOtherColor

但这似乎没有任何效果。颜色会继续变化,但不会从一个变为另一个。

这是我正在寻找文字效果的快速模型。

text changing color

1 个答案:

答案 0 :(得分:0)

此代码对我有用:

    private func animateTitleColor(selected: Bool, completion: (()->())?) {
        if !selected{
            NSAnimationContext.runAnimationGroup({ (context) in
                context.duration = self.animationInterval
                self.titleLabel.animator().textColor = rgb(red: 197, green: 191, blue: 196)
            }, completionHandler: completion)
        }else{
            NSAnimationContext.runAnimationGroup({ (context) in
                context.duration = self.animationInterval
                self.titleLabel.animator().textColor = .white
            }, completionHandler: completion)
        }
    }

titleLabel的声明如下:let titleLabel = NSTextField()