当手指在 iPhone 上移动时如何在图像顶部画一条线

Posted

技术标签:

【中文标题】当手指在 iPhone 上移动时如何在图像顶部画一条线【英文标题】:How to draw a line on top of an image when finger moves on iPhone 【发布时间】:2010-12-01 01:47:12 【问题描述】:

我试图在 UIView 中的背景图像上绘制一条线,以跟踪用户手指的移动。我可以通过将 UIImage 绘制为背景然后在 drawRect 中绘制线条来完成此操作,但是每次调用 drawRect 时我都必须加载图像,这会使性能变慢。或者,如果我使用 UIImageView 作为我的背景图像(只需将其添加到 IB 中的视图或以编程方式),当它被拖动到图像上时,线条就会消失。有没有办法告诉在 UIImageView 上绘制线条。感谢您的帮助。

这是我使用 UIImage 方法的代码:

- (void)drawRect:(CGRect)rect 
    UIImage *imageField = [UIImage imageNamed:@"field.jpg"];
    CGRect rectForImage=CGRectMake(0,0,200,200);
    [imageField drawInRect:rectForImage];

        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextMoveToPoint(context, x1, y1);
    CGContextAddLineToPoint(context, x2, y2);
    CGContextStrokePath(context);

【问题讨论】:

【参考方案1】:

将图像添加为背景视图是正确的方法。问题在于您将图像直接添加到视图中。子视图显示在视图的顶部,而不是其后面。正确使用将图像视图作为背景的容器视图,然后在其上使用您的画线视图。

【讨论】:

谢谢大卫。像魅力一样工作。 (在新视图上将 Opaque 属性设置为 NO)。【参考方案2】:

您可以尝试将您的(不透明的)线条绘制到透明的 CALayer 上,然后将该 CALayer 放在您的 UIView 顶部,从而在背景 UIImage 上方。

【讨论】:

以上是关于当手指在 iPhone 上移动时如何在图像顶部画一条线的主要内容,如果未能解决你的问题,请参考以下文章

如何跟踪触摸时的手指运动以绘制平滑曲线?

从两个按钮之间的手势画一条线

UITableView 顶部的透明视图

如何像 iPhone 照片应用程序那样防止自动旋转?

在 4 英寸 iphone 上查看时 UIImageView 正在向下移动

在“轨道”中滑动的移动图像[重复]