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 に答える