アプリにハイライト機能を実装しました。このハイライトは、PNG 表現として保存できるように UIImage に描画されています。すべてが完璧に機能していますが、最近、非常に紛らわしい問題に気付きました。ときどきハイライトをしていると、絵がゆがむことがあります。これは次のようになります。
文字をハイライトするために指を動かすたびに、描画されたハイライトが左に伸びます。別のもの:
これは、指をハイライトに動かすたびに、描いたハイライトが上に動いていきます!
これはすべて私にとって非常に混乱しています。これはときどき発生し、特定のページだけで発生することもあります。時々、次のようにうまく動作します:
なぜこれが起こっているのか、私は非常に混乱しています。なぜこれが起こっているのか、誰かが私に教えてくれるか、少なくとも私に考えを与えることができますか? 私を助けてください。
コード:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
currPoint = [[touches anyObject]locationInView:self];
for (int r = 0; r < [rectangles count]; r++)
{
CGRect rect = [[rectangles objectAtIndex:r]CGRectValue];
//Get the edges of the rectangles
CGFloat xEdge = rect.origin.x + rect.size.width;
CGFloat yEdge = rect.origin.y + rect.size.height;
if ((currPoint.x > rect.origin.x && currPoint.x < xEdge) && (currPoint.y < rect.origin.y && currPoint.y > yEdge))
{
imgView.image = [self drawRectsToImage:imgView.image withRectOriginX:rect.origin.x originY:rect.origin.y rectWidth:rect.size.width rectHeight:rect.size.height];
break;
}
}
}
//The function that draws the highlight
- (UIImage *)drawRectsToImage:(UIImage *)image withRectOriginX:(CGFloat)x originY:(CGFloat)y rectWidth:(CGFloat)width rectHeight:(CGFloat)ht
{
UIGraphicsBeginImageContext(self.bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[image drawInRect:self.bounds];
CGContextSetStrokeColorWithColor(context, [UIColor clearColor].CGColor);
CGRect rect = CGRectMake(x, y, width, ht);
CGContextAddRect(context, rect);
CGContextSetCMYKFillColor(context, 0, 0, 1, 0, 0.5);
CGContextFillRect(context, rect);
UIImage *ret = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return ret;
}