2

在我的程序中,我有一个窗口,用户将其放置在屏幕上他想要拍照的部分上。

然后,当他单击按钮拍照时,我的程序orderOut是窗口,截取屏幕截图,然后再次显示窗口,现在里面有屏幕截图。

问题是,orderOut似乎没有立即关闭窗口。所以当我截屏时,它通常会截取窗口本身的截图(应该已经关闭),这显然不是我想要的。

我已经能够通过在调用sleep(1)后调用来回避问题orderOut,但肯定有更好的方法吗?

4

1 回答 1

2

根据此处的文档。当您调用 orderOut 时,窗口会播放动画。因此,您可以通过将动画行为设置为 none 来删除 orderOut 动画:

[myWindow setAnimationBehavior:NSWindowAnimationBehaviorNone]

或使用 NSObject 方法performSelector:withObject:afterDelay:在一定时间 x 后执行屏幕截图操作。假设 NSWindow orderOut 动画使用默认持续时间,则延迟将为 0.2f。否则,您可以进行一些测试以检查适合您情况的值。

于 2012-09-01T20:12:32.460 回答