user440096
user440096

Reputation:

I want to draw a rectangle like shape with drag-able corners in IOS

I want to overlay a a box shape over a photograph and allow the user to select each corner, and drag the corners to where they want.

I could use 4 invisible buttons(to represent each corner) that respond to drag events to get the x,y points for each corner, but is there some line drawing functionality available in xcode without touching any of the game api classes? I guess I want to draw lines onto a UIView.

Many Thanks, -Code

Upvotes: 2

Views: 2595

Answers (1)

Khurram Ali
Khurram Ali

Reputation: 835

Make a subclass of UIView to represent your view. Add a UIImageView to your view. This will hold the image with user's drawing.

Enable user interaction in the UIView sub-class.

self.userInteractionEnabled = YES;

Detect the starting tap by implementing this method in your subclass:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // We are starting to draw
    // Get the current touch.
    UITouch *touch = [touches anyObject];    
    startingPoint = [touch locationInView:self];
}

Detect the last tap to draw straight line:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];    
    endingPoint = [touch locationInView:self];

    // Now draw the line and save to your image
    UIGraphicsBeginImageContext(self.frame.size);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 10);
    CGContextMoveToPoint(context, NULL, startingPoint.x, startingPoint.y);
    CGContextAddLineToPoint(context, NULL, endingPoint.x, endingPoint.y);
    CGContextSetRGBFillColor(context, 255, 255, 255, 1);
    CGContextSetRGBStrokeColor(context, 255, 255, 255, 1);
    CGContextStrokePath(context);
    self.image = UIGraphicsGetImageFromCurrentImageContext();
    CGContextRelease(context);
}

Upvotes: 2

Related Questions