如何动画显示为 sheet 的 NSViewController 的大小变化?
How to animate the size change of an NSViewController presented as a sheet?
在Xcode中,如果您尝试创建一个新文件,它会询问您将它保存在哪里。您可以按此按钮展开显示的 sheet:
我正在尝试创建类似于该按钮的东西,它将放大 NSViewController
并显示 Sheet segue。请注意,我并不是要创建我自己的 NSSavePanel
版本。我只是想以此为例来说明我要创建的按钮的行为。
我知道我可以将 preferredContentSize
设置为更大的值以放大 sheet:
preferredContentSize = CGSize(width: 300, height: 300)
但这会立即改变大小,这与保存文件对话框中的按钮不同,它显示 sheet 放大的动画。
我试着把它放在动画块中:
NSAnimationContext.runAnimationGroup { (context) in
context.duration = 1
preferredContentSize = CGSize(width: 300, height: 300)
}
但同样的事情发生了。
我很确定 NSViewController
中应该有一个方法,或者我找不到的类似方法...
NSWindow 有一个方法可以做到这一点:
self.view.window?.setFrame(NSRect(x: 0, y: 0, width: 100, height: 100), display: true, animate: true)
在Xcode中,如果您尝试创建一个新文件,它会询问您将它保存在哪里。您可以按此按钮展开显示的 sheet:
我正在尝试创建类似于该按钮的东西,它将放大 NSViewController
并显示 Sheet segue。请注意,我并不是要创建我自己的 NSSavePanel
版本。我只是想以此为例来说明我要创建的按钮的行为。
我知道我可以将 preferredContentSize
设置为更大的值以放大 sheet:
preferredContentSize = CGSize(width: 300, height: 300)
但这会立即改变大小,这与保存文件对话框中的按钮不同,它显示 sheet 放大的动画。
我试着把它放在动画块中:
NSAnimationContext.runAnimationGroup { (context) in
context.duration = 1
preferredContentSize = CGSize(width: 300, height: 300)
}
但同样的事情发生了。
我很确定 NSViewController
中应该有一个方法,或者我找不到的类似方法...
NSWindow 有一个方法可以做到这一点:
self.view.window?.setFrame(NSRect(x: 0, y: 0, width: 100, height: 100), display: true, animate: true)