我想在点击特定按钮后使我的NSWindow动画化,因此我编写了一个函数:
func fadeIn(window: NSWindow, duration: NSTimeInterval) {
var alpha = 0.0 as CGFloat
window.alphaValue = alpha
window.makeKeyAndOrderFront(nil)
let numberOfLoops = Int(duration / 0.02)
let alphaChangeInLoop = (CGFloat(1.0) / CGFloat(numberOfLoops))
var loopRun = 0
for _ in 0...numberOfLoops {
loopRun += 1
alpha += alphaChangeInLoop
window.alphaValue = alpha
NSThread.sleepForTimeInterval(0.020)
}
print("Loop was run \(loopRun) times. Ending alpha: \(alpha)")
if alpha != 1.0 {
alpha = 1.0
window.alphaValue = 1.0
print("Alpha set to 1.0")
}
}
在我看来,一切都很好,但实际上不是这样的——窗口并没有淡入。它只是在我在持续时间字段中输入任何内容后出现(所以可能不接受任何小于1.0的alphaValue)。
在OSX应用程序中是否可以动画化alphaValue?我已经在论坛上搜索过了,发现了其他一些方法,包括NSAnimationContext,但对我没有用。