我有一个简单的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
}
}
}
最佳答案
我误解了动画中动画值的工作方式。正确的设置方法是:
@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
})
}