0

iPhoneアプリで指をドラッグして複数の色で描画していますが、アプリを最小化してから最大化すると、drawrectメソッドが呼び出されるため、すべての描画が失われます。このメソッドがどこから呼び出されているかはわかりませんが、この問題の解決策がわかりません。主に、デバイスで多くのアプリを実行しているときに発生します。iPhoneのパフォーマンス低下を防ぐために、iOSはバッファ内のデータをすべて削除していると思います。この問題の解決策は何ですか? そして、なぜそれは図面を失っているのですか? 助けてください!この問題の解決策は見つかりませんでした。

4

3 に答える 3

1

drawrectメソッドを呼び出すため、すべての描画が失われます。

質問から、drawRectメソッドで描画していないように見えます。ビューが更新/ロードされるたびに、drawrectメソッドが呼び出されます。したがって、バックグラウンドから入力すると、drawrectメソッドが呼び出されます。drawrectメソッドで描画メカニズムを処理していない場合は、すべてのデータが失われます。

Appleは次のように述べています

このメソッドのデフォルトの実装は何もしません。ネイティブの描画テクノロジー(Core GraphicsやUIKitなど)を使用してビューのコンテンツを描画するサブクラスは、このメソッドをオーバーライドし、そこに描画コードを実装する必要があります。ビューが他の方法でコンテンツを設定する場合は、このメソッドをオーバーライドする必要はありません。たとえば、ビューに背景色が表示されるだけの場合、またはビューが基になるレイヤーオブジェクトを使用してコンテンツを直接設定する場合は、このメソッドをオーバーライドする必要はありません。同様に、ビューがOpenGL ESを使用して描画を行う場合は、このメソッドをオーバーライドしないでください。

他の方法で処理している場合は、viewwillAppearでビューが描画された後で処理する必要があります。

それ以外の場合は、メモリの理由がある可能性があります。メモリの警告が表示された場合、通常はデータを初期化する場所でViewDidLoadが呼び出されるためです。

于 2013-02-21T04:44:44.003 に答える
1

ビューはバックグラウンドでアンロードされ、フォアグラウンドに戻ると、ビューが再作成されるため、再描画されます。

バックグラウンドに入ると、デバイスのメモリが少ない場合、Appleはバックグラウンドアプリのビューをアンロードし(アプリを閉じても)、現在実行中のアプリのメモリを拡大します。ビューはアンロードされます。フォアグラウンドに戻ると、ビューは「データ」によって再作成されるため、ビューに「データ」を保持しないようにしてください。

そしておそらくIOS6では、Appleはメカニズムを変更します

于 2013-02-21T03:39:37.657 に答える
0

フレームワークは必要に応じてdrawRectを呼び出します。呼び出されたときにビューを描画するのは、ユーザーの責任です。drawRectが呼び出されるたびにビューを再描画するには、ユーザーアクションから必要な状態を保存する必要があります。

于 2013-02-21T03:38:48.580 に答える