objective-c: draw line on top of UIImage or UIImageView

前端 未结 3 723
自闭症患者
自闭症患者 2020-12-17 04:00

How do I draw a simple line on top of a UIImage or UIImageView?

相关标签:
3条回答
  • 2020-12-17 04:35

    For Swift 3.0

        UIGraphicsBeginImageContext(originalImage.size)
        originalImage.draw(at: CGPoint(x: 0, y: 0))
        let context = UIGraphicsGetCurrentContext()!
        context.setLineWidth(2)
        context.move(to: CGPoint(x: 0, y: originalImage.size.height - 2))
        context.addLine(to: CGPoint(x: originalImage.size.width, y: originalImage.size.height - 2))
        context.setStrokeColor(UIColor.red.cgColor)
        context.strokePath()
        let finalImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
    
    0 讨论(0)
  • 2020-12-17 04:36

    The following code works by creating a new image the same size as the original, drawing a copy of the original image onto the new image, then drawing a 1 pixel line along to the top of the new image.

    // UIImage *originalImage = <the image you want to add a line to>
    // UIColor *lineColor = <the color of the line>
    
    UIGraphicsBeginImageContext(originalImage.size);
    
    // Pass 1: Draw the original image as the background
    [originalImage drawAtPoint:CGPointMake(0,0)];
    
    // Pass 2: Draw the line on top of original image
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 1.0);
    CGContextMoveToPoint(context, 0, 0);
    CGContextAddLineToPoint(context, originalImage.size.width, 0);
    CGContextSetStrokeColorWithColor(context, [lineColor CGColor]);
    CGContextStrokePath(context);
    
    // Create new image
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    
    // Tidy up
    UIGraphicsEndImageContext();
    

    Alternatively, you could create the line as a CAShapeLayer then add it as a subview to the UIImageView (see this answer).

    0 讨论(0)
  • 2020-12-17 04:45

    For Swift 2.3

    func drawLineOnImage(size: CGSize, image: UIImage, from: CGPoint, to: CGPoint) -> UIImage {
        UIGraphicsBeginImageContext(size)
        image.drawAtPoint(CGPointZero)
        let context     = UIGraphicsGetCurrentContext()
        CGContextSetLineWidth(context, 1.0)
        CGContextSetStrokeColorWithColor(context, UIColor.blueColor().CGColor)
        CGContextMoveToPoint(context, from.x, from.y)
        CGContextAddLineToPoint(context, to.x, to.y)
        CGContextStrokePath(context)
    
        let resultImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return resultImage
    }
    
    0 讨论(0)
提交回复
热议问题