使用NSAnimationContext淡出NSButton

时间:2017-02-09 12:10:12

标签: swift animation swift3 nsview nsanimationcontext

我有一个简单的Swift macOS应用程序(使用Xcode 8.2.1),它包含一个NSButton。当我点击按钮时,我希望它在指定时间内淡出。我以为我可以使用NSAnimationContext,但无论我设置context持续时间的值是什么,按钮几乎立即淡出。这不是正确的方法吗?

class ViewController: NSViewController {

  @IBOutlet weak var basicButton: NSButton!

  override func viewDidLoad() {
    super.viewDidLoad()
  }

  @IBAction func basicButtonClicked(_ sender: NSButton) {
    NSAnimationContext.runAnimationGroup({ (context) in
      context.duration = 10.0
      self.basicButton.animator().alphaValue = 1
    }) { 
      self.basicButton.animator().alphaValue = 0
    }
  }
}

1 个答案:

答案 0 :(得分:3)

我误解了动画师在动画过程中的价值。设置它的正确方法是:

@IBAction func basicButtonClicked(_ sender: NSButton) {
  NSAnimationContext.runAnimationGroup({ (context) in
    context.duration = 10.0
    // Use the value you want to animate to (NOT the starting value)
    self.basicButton.animator().alphaValue = 0
  })
}