我正试图用Swift增加NSWindow的大小。 (MAC)
现在,我能够在没有动画的情况下做到这一点,但我不知道如何用动画做到这一点。
一个。我会对代码感兴趣。
B中。如果有教程或书籍,可以删除链接。
答案 0 :(得分:3)
以下代码将窗口高度增加50像素,并将y原点减少相同的量。这会将窗口放大到屏幕底部。
var windowFrame = self.view.window?.frame
let oldX = windowFrame?.origin.x
let oldY = windowFrame?.origin.y
let oldWidth = windowFrame?.size.width
let oldHeight = windowFrame?.size.height
let toAdd = CGFloat(50.0)
let newY = oldY! - toAdd
let newHeight = oldHeight! + toAdd
windowFrame? = NSMakeRect(oldX!, newY, oldWidth!, newHeight)
self.view.window?.animator().setFrame(windowFrame!, display: true, animate: true)
你必须调用窗口的动画师才能获得动画(潜在的错误?)。这不会产生动画:
self.view.window?.animator().setFrame(windowFrame!, display: true, animate: true)
答案 1 :(得分:0)
您是否在NSWindow
上尝试过动画制作代理?这是我要尝试的第一件事。不知道如何做得很好,但如果你的窗户不是很复杂,它可能适合你的需要。这是使用动画师代理淡化窗口的some Objective-C sample code (gist),但您可以根据帧大小调整它。将它转换为Swift应该非常简单。
对类似问题的回复Why is [[NSWindow animator] setFrame...] very laggy sometimes?建议使用名为JNWAnimatableWindow的库。它使用Core Animation。它是用Objective-C编写的,但是,您可以使用桥接头将它带入Swift项目。