2010-12-01 2 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

Добавление изображения в качестве фона вид является правильный способ сделать это. Проблема заключается в том, что вы добавили изображение прямо в представление. Subviews отображаются поверх представления, а не позади него. Правильно используйте представление контейнера, которое содержит представление изображения в качестве фона, а затем ваш вид рисования линии поверх этого.

+0

Спасибо, Дэвид. Работал как шарм. (поверните свойство Opaque к NO на новом представлении). – JMH 2010-12-01 22:44:29

1

Вы можете попробовать сделать ваши (непрозрачные) линии прозрачным CALayer и разместить этот CALayer поверх вашего UIView, таким образом, над фоном UIImage.

Смежные вопросы