1

这是一个与在 iPad 应用程序的视图中使用 Core Graphics 绘制路径(响应触摸事件)相关的问题。

我有一个视图作为滚动视图的一部分,我想在其中跟踪触摸路径。下面的代码适用于应用程序中的其他 uiimageviews,但不适用于这个特定的子视图。当我绘制时(通过在屏幕上跟踪/触摸),线条出现但开始在 y 方向上移动。所以,整个轨迹在 y 方向上不断压缩!!随着线条向上移动,它们似乎也在扩散并最终消失!

相同的代码适用于滚动视图之外的不同视图。过去 3 天我在网上搜索并花了几个小时试图了解这里发生了什么,但我仍然不知道。任何帮助/建议将不胜感激。

谢谢。

这是我的绘图代码:

UIGraphicsBeginImageContext(coverIVFragments.frame.size);
            [coverIVFragments.image drawInRect:CGRectMake(0, 0, coverIVFragments.frame.size.width, coverIVFragments.frame.size.height)];
            CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
            CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 2.0);
            CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), red, green, blue, 1.0);
            CGContextBeginPath(UIGraphicsGetCurrentContext());
            CGContextMoveToPoint(UIGraphicsGetCurrentContext(), x1, y1);
            CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), x2, y2);
            CGContextStrokePath(UIGraphicsGetCurrentContext());

            coverIVFragments.image = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();
4

1 回答 1

1

首先,您应该使用采用比例而不是 UIGraphicsBeginImageContext 的新方法(在 iPad 上没有 Xcode 方便)。

问题可能是与滚动视图的交互。在您的例程顶部记录滚动视图 contentOffset 和您的框架。您一直假设原点为 0,0,但实际上您想要的帧很可能是 sv.contentOffset 和 sv.bounds.size 的组合。

对我来说,我经常记录这类问题,我需要做的事情很快就会变得很明显。

编辑:你的问题是使用非积分矩形 - 这条线纠正了没有缩放的问题:

   coverImageView.frame = CGRectIntegral(coverImageView.frame);
   UIGraphicsBeginImageContextWithOptions(coverImageView.frame.size, NO, imageScrollView.zoomScale);

我认为您没有正确使用“比例”参数 - 可能您应该调整绘图将进入的矩形的大小,并仅将比例用于其预期目的并在那里传递“0”。

于 2012-09-16T12:28:32.680 回答