我想在我的 pdf 阅读器应用程序中实现一个 Highlight 功能。不幸的是,我的研究得到的关于这方面的信息很少。然而,我开始相信我必须使用“覆盖”来绘制或“突出显示”。我现在打算做的是在 pdf 中添加一个 CALayer。我成功地将形状渲染到图层中(例如简单的线条、圆形和正方形),但我似乎无法自由地在其中绘制(就像在 Draw Something 中一样)。这是我使用的代码:
当用户开始突出显示时:
- (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);
}
发生的事情是它绘制了一个点,并且该点随处可见!谁能告诉我这段代码有什么问题?