0

我正在尝试NSTextField通过使用淡化动画来更改文本颜色NSAnimationContext。但它不起作用。请帮我解决这个问题。谢谢大家!

代码:

 override func viewDidLoad() {
        super.viewDidLoad()
 
        label!.animator().textColor = NSColor.black
    }
    
    @IBAction func changeColor(_ sender: NSButton){
        
        NSAnimationContext.runAnimationGroup { (context) in
            
            context.duration = 1.0
            label!.animator().textColor = NSColor.red
        }
   }
4

2 回答 2

1

以下是一种可能的解决方案的概要:

  • 子类NSAnimation,说TextColorAnimation
  • 参加决赛init_NSTextFieldNSColor
  • currentProgress根据文档覆盖NSAnimation(a) 调用超级实现和 (b) 设置中间颜色displayNSTextField
  • 用于NSColor.blend(...)确定中间色
  • startNSAnimation

你应该得到一个很好的平滑颜色过渡。高温高压

于 2021-07-19T05:32:21.140 回答
0

在完成处理程序中更新颜色和 alpha 值:

@IBAction func changeColor(_ sender: NSButton){
    NSAnimationContext.runAnimationGroup({ [self] context in
        context.duration = 1.0
        context.timingFunction = CAMediaTimingFunction(name: .easeOut)
        label.animator().alphaValue = 0.0
        label.animator().textColor = NSColor.black
    }, completionHandler: { [self] in
        NSAnimationContext.runAnimationGroup({ [self] context in
            context.duration = 1.0
            context.timingFunction = CAMediaTimingFunction(name: .easeIn)
            label.animator().alphaValue = 1.0
            label.animator().textColor = NSColor.red
        }, completionHandler: {
        })
    })
 }
于 2021-07-19T07:16:47.443 回答