2010-12-01 85 views
0

我想在我的UIView中的背景图像上绘制一条线,用于跟踪用户手指的移动。我可以通过绘制UIImage作为我的背景,然后在drawRect中进行绘制来完成此任务,但是每次drawRect被调用时都必须加载图像,并且会导致性能迟缓。或者,如果我使用UIImageView作为背景图像(只需将其添加到IB中的视图或以编程方式),则当它拖动到图像上时,线条消失。有没有办法让这些线条在UIImageView的顶部绘制。谢谢你的帮助。如何在手指移动时在图像上绘制一条线iPhone

下面是使用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

添加图像为背景的看法是这样做的正确方法。问题在于你直接将图像添加到视图。子视图显示在视图的顶部,而不是在它后面。正确使用将图像视图保存为背景的容器视图,然后使用您的线图视图。

+0

谢谢大卫。像魅力一样工作。 (在新视图上将不透明属性设置为NO)。 – JMH 2010-12-01 22:44:29

1

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