0

This code make changes to the imageview, but it replaces its original image. I need to edit on the original image not to replace it.

- (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();
}

When I remove this line:

self.planView.image = UIGraphicsGetImageFromCurrentImageContext();

The image doesn't disappear but also doesn't draw. I need to draw without removing the original photo.

rmaddy
  • 314,917
  • 42
  • 532
  • 579
Mostafa Sultan
  • 2,268
  • 2
  • 20
  • 36

1 Answers1

6

You cant do imagview.image because, it will replace the old image with new one. If you are planning to draw something new on the image view, try to add sublayer on the imageview.

convert your image into cgiimage and add it to layer.you should convert UIGraphicsGetImageFromCurrentImageContext() into UIGraphicsGetImageFromCurrentImageContext().CGImage

you need to create a CALayer and add your CGI image to the layer.contents and use that layer as sub layer

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

and do this:

[self.imageView.layer addSublayer:layer];
Teja Nandamuri
  • 11,045
  • 6
  • 57
  • 109