2015-10-19 3 views
0

Этот код вносит изменения в изображение, но заменяет его исходное изображение. Мне нужно отредактировать исходное изображение, чтобы его не заменить.Нарисуйте UIImageView без замены его исходного изображения iOS

- (void)drawShapes { 
    //NSLog(@"In drawShapes!"); 

    UIGraphicsBeginImageContext(self.planView.frame.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    for(myShape *i in _collection) { 
     [self drawShapesSubroutine:i contextRef:context]; 
     if(i.selected == true) { 
      CGContextSetLineWidth(context, 1.0f); 
      CGContextSetStrokeColorWithColor(context, [[UIColor darkGrayColor] CGColor]); 
      float num[] = {6.0, 6.0}; 
      CGContextSetLineDash(context, 0.0, num, 2); 

      CGRect rectangle; 
      [self drawShapeSelector:i selectorRect: &rectangle]; 
      CGContextAddRect(context, rectangle); 
      CGContextStrokePath(context); 


      //tapped = true; 
     } 
    } 

    if(!skipDrawingCurrentShape && (selectedIndex == -1)) { 
     [self drawShapesSubroutine:_currentShape contextRef:context]; 
    } 
    self.planView.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
} 

Когда я удалить эту строку:

self.planView.image = UIGraphicsGetImageFromCurrentImageContext(); 

Изображение не исчезает, но и не тянет. Мне нужно рисовать, не снимая исходную фотографию.

+0

как RU вызова DrawShapes? –

+0

Я называю это следующим образом: [self drawShapes]; –

+1

вы не можете сделать imagview.image, потому что он заменит старое изображение новым. Если вы планируете нарисовать что-то новое в представлении изображения, попробуйте добавить подуровень в imageview –

ответ

6

Вы не можете сделать imagview.image, потому что он заменит старое изображение новым. Если вы планируете нарисовать что-то новое на изображении, попробуйте добавить подуровень на imageview.

преобразовать изображение в cgiimage и добавить его в layer.you должен преобразовать UIGraphicsGetImageFromCurrentImageContext() в UIGraphicsGetImageFromCurrentImageContext().CGImage

вам нужно создать CALayer и добавить CGI изображение в layer.contents и использовать этот слой как подслой

CALayer *layer = [CALayer layer]; 
layer.contents = (id)UIGraphicsGetImageFromCurrentImageContext().CGImage; 

и сделать это:

[self.imageView.layer addSublayer:layer]; 
+0

для моей задачи я не буду делать addublayer за исключением первого раза и продолжаю редактировать этот слой –

+0

CALayer * layer = [CALayer layer]; строка дает ссылку ошибки –

+0

вы можете вставить ошибку? –