アプリにフリーフォーム描画を実装したいと考えています。まず、内部のコードを試してみたところ、drawLayer:inContext:
希望どおりの結果が得られました。
CALayer での描画:
しかし、 内drawRect:
にコードを実装することにしたとき、次のことが起こりました。
空白の内側に描画しても、上記のように外側にレンダリングされます。私が使用したコードはまったく同じです。から にコピペしdrawLayer:inContext:
ましたdrawRect:
。私は何も変えていないのに、どうしてこうなったの?
コード:
CGContextSaveGState(ctx);
CGContextSetLineCap(ctx, kCGLineCapRound);
CGContextSetLineWidth(ctx, 1.0);
CGContextSetRGBStrokeColor(ctx, 1, 0, 0, 1);
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, prevPoint.x, prevPoint.y);
for (NSValue *r in drawnPoints){
CGPoint pt = [r CGPointValue];
CGContextAddLineToPoint(ctx, pt.x, pt.y);
}
CGContextStrokePath(ctx);
CGContextRestoreGState(ctx);