0

UIBezierPathを使用して、UIView(背景は透明です)に描画線を実装しました。

線を引くために、- (void)drawRect:(CGRect)rectメソッドで次のコードを使用しました:-

UIBezierPath *_path = [pathArray objectAtIndex:0];
[currentColor setStroke];
[_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];

ここで、pathArray は複数の UIBezierPath オブジェクトの配列です。

描画を消去するために、- (void)drawRect:(CGRect)rectメソッドで次のコードを使用しました:-

UIBezierPath *_path = [pathArray objectAtIndex:10];
[[UIColor clearColor] setStroke];
[_path strokeWithBlendMode:kCGBlendModeClear alpha:1.0];

上記の両方のメソッドは、透明な UIView で描画しているときにうまく機能します。しかし、白い背景色の UIView で描画しているときに、描画を消去した場所に黒い色が表示されます。図面ビューのスクリーンショットのキャプチャ中にも同じ問題が発生しました。解決策はありますか?

同じ図面の次のスクリーンショットを参照してください。明確になります。

4

1 に答える 1

1

私は自分で問題を解決しました。次のような描画を消去するためのコードを記述しています。

UIBezierPath *_path = [pathArray objectAtIndex:10];
[drawingView.backgroundColor setStroke];
[_path strokeWithBlendMode:kCGBlendModeCopy alpha:1.0];

ここでは、描画しているビューの背景色の代わりに設定strokeWithBlendModeして使用する必要があります。kCGBlendModeCopykCGBlendModeClear

于 2013-11-01T07:01:52.297 に答える