PDF リーダー アプリにハイライト機能を実装したいと考えています。残念ながら、私の調査では、これに関する情報はほとんど得られませんでした。ただし、描画または「ハイライト」を行う必要がある場合は「オーバーレイ」を使用する必要があると考えるようになりました。私が今やろうとしているのは、PDFにCALayerを追加することです。レイヤーに形状をレンダリングすることには成功していますが (単純な線、円、正方形など)、レイヤーに自由に描画することはできません (何かを描画する場合のように)。使用したコードは次のとおりです。
ユーザーが強調表示を開始すると:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
prevPoint = [touch locationInView:theContentView];
drawImageLayer = [CALayer layer];
drawImageLayer.frame = theContentView.frame;
[theContentView.layer addSublayer:drawImageLayer];
}
ユーザーが強調表示を開始するとき:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
currPoint = [touch locationInView:theContentView];
drawImageLayer.delegate = self;
[drawImageLayer setNeedsDisplay];
}
これは、描画が行われるコードです。
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx{
NSLog(@"DrawLayer being called..");
CGContextSaveGState(ctx);
CGContextSetLineCap(ctx, kCGLineCapRound);
CGContextSetLineWidth(ctx, 1.0);
CGContextSetRGBStrokeColor(ctx, 1, 0, 0, 1);
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, prevPoint.x, prevPoint.y);
CGContextAddLineToPoint(ctx, currPoint.x, currPoint.y);
CGContextStrokePath(ctx);
prevPoint = currPoint;
CGContextRestoreGState(ctx);
}
何が起こるかというと、点が描かれ、その点はどこでもカーソルをたどります! このコードの何が問題なのか誰か教えてもらえますか?