0

私は使用しています

penLayer が UIView の場合

UIGraphicsBeginImageContext(penLayer.frame.size);

CGContextRef  context = UIGraphicsGetCurrentContext();
    //My Drawing Code
penLayer.image = UIGraphicsGetImageFromCurrentImageContext();
[penLayer setNeedsDisplay];

これは素晴らしい描画ですが、drawRect を呼び出すたびに、以前のものは消去されます。現在、すべての描画データを辞書に保存する必要があります。

drawRect への呼び出しごとにクリアされないようにする方法はありますか?また、必要に応じて clear を呼び出す UIButton を持っている可能性がありますか?

ありがとう

4

1 に答える 1

0

UIView には と呼ばれる BOOL プロパティclearsContextBeforeDrawingがあります。私はあなたがそれを使用していないと仮定しています。ドキュメントの議論から:

に設定すると、メソッドが呼び出されるYES前に、描画バッファが透明な黒に自動的にクリアされます。drawRect:この動作により、ビューのコンテンツが再描画されたときに視覚的なアーティファクトが残らないことが保証されます。ビューのopaqueプロパティも に設定されている場合、ビューYESのプロパティbackgroundColorを nil にすることはできません。そうしないと、描画エラーが発生する可能性があります。このプロパティのデフォルト値は ですYES

このプロパティの値を に設定した場合、メソッドNOでビューのコンテンツが適切に描画されるようにする必要がありますdrawRect:。描画コードがすでに十分に最適化されている場合、このプロパティを NO に設定すると、特にビューの一部のみを再描画する必要がある場合のスクロール時に、パフォーマンスが向上する可能性があります。

于 2012-06-22T16:43:45.937 に答える