2016-05-14 4 views
0

У меня есть пользовательский UIView, внутри которого я должен показать изображение в качестве фона и нарисовать его свободно, используя штрихи и перетаскивания, упомянутые в этом вопросе iOS: iOS: Drawing line is appearing behind subviews, , но doesn ' т, кажется, работает, он рисует образ, но ничего не сделать над ним, пожалуйста, помогитеНевозможно нарисовать UIImage внутри UIView

После пользовательских UIView рисует свободную руку

- (id)initWithCoder:(NSCoder *)aDecoder // (1) 
{ 
    if (self = [super initWithCoder:aDecoder]) 
    { 
     [self setMultipleTouchEnabled:NO]; // (2) 
     [self setBackgroundColor:[UIColor whiteColor]]; 
     path = [UIBezierPath bezierPath]; 
     [path setLineWidth:2.0]; 
    } 


    return self; 
} 

- (void)drawRect:(CGRect)rect // (5) 
{ 

    [[UIColor blackColor] setStroke]; 
    [path stroke]; 

} 


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint p = [touch locationInView:self]; 
    [path moveToPoint:p]; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint p = [touch locationInView:self]; 
    [path addLineToPoint:p]; // (4) 
    [self setNeedsDisplay]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self touchesMoved:touches withEvent:event]; 
} 

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self touchesEnded:touches withEvent:event]; 
} 


@end 

Это главный UIView внутри я добавил UIImage и OverlayView

- (id)initWithCoder:(NSCoder *)aDecoder // (1) 
{ 
    if (self = [super initWithCoder:aDecoder]) 
    { 
     CGRect rect1 = self.frame; 
     rect1.origin.x = 0; 
     rect1.origin.y = 0; 

     UIImageView *dot =[[UIImageView alloc] initWithFrame:CGRectMake(rect1.origin.x,rect1.origin.y,rect1.size.width,rect1.size.height)]; 
     dot.image = [UIImage imageNamed:@"miter"]; 
     [self addSubview:dot]; 

     OverlayView *overlay = [[OverlayView alloc] initWithFrame:CGRectMake(rect1.origin.x,rect1.origin.y,rect1.size.width,rect1.size.height)]; 
     [overlay setBackgroundColor:[UIColor clearColor]]; 

     [self addSubview:overlay]; 
     [self bringSubviewToFront:overlay]; 

    } 


    return self; 
} 



@end 
+0

Вы не описали, как это не работает, вы получаете строку, где она и т. Д. ... – Wain

+0

@wain он не рисует ни одной строки, когда я прокручиваю палец по экрану, изображение появляется на фон, но ничего не нарисовано над ним –

+1

Вы называете ваши прикосновения? – Wain

ответ

0

Установите для свойства userInteractionEnabled значение YES. Значение по умолчанию для UIViews равно YES, но для UIImageViews нет NO, поэтому вы должны явно включить его.

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