在我的程序中,我有一个窗口,用户将其放置在屏幕上他想要拍照的部分上。
然后,当他单击按钮拍照时,我的程序orderOut
是窗口,截取屏幕截图,然后再次显示窗口,现在里面有屏幕截图。
问题是,orderOut
似乎没有立即关闭窗口。所以当我截屏时,它通常会截取窗口本身的截图(应该已经关闭),这显然不是我想要的。
我已经能够通过在调用sleep(1)
后调用来回避问题orderOut
,但肯定有更好的方法吗?
在我的程序中,我有一个窗口,用户将其放置在屏幕上他想要拍照的部分上。
然后,当他单击按钮拍照时,我的程序orderOut
是窗口,截取屏幕截图,然后再次显示窗口,现在里面有屏幕截图。
问题是,orderOut
似乎没有立即关闭窗口。所以当我截屏时,它通常会截取窗口本身的截图(应该已经关闭),这显然不是我想要的。
我已经能够通过在调用sleep(1)
后调用来回避问题orderOut
,但肯定有更好的方法吗?
根据此处的文档。当您调用 orderOut 时,窗口会播放动画。因此,您可以通过将动画行为设置为 none 来删除 orderOut 动画:
[myWindow setAnimationBehavior:NSWindowAnimationBehaviorNone]
或使用 NSObject 方法performSelector:withObject:afterDelay:在一定时间 x 后执行屏幕截图操作。假设 NSWindow orderOut 动画使用默认持续时间,则延迟将为 0.2f。否则,您可以进行一些测试以检查适合您情况的值。