Draw another image on a UIImage

后端 未结 2 1806
情深已故
情深已故 2020-11-30 06:47

Is it possible to add another, smaller, image to a UIImage/UIImageView? If so, how? If not, then how can I draw a small filled triangle?

Thanks

相关标签:
2条回答
  • 2020-11-30 07:08

    You could add a subview to your UIImageView containing another image with the small filled triangle. Or you could draw inside of the first image:

    CGFloat width, height;
    UIImage *inputImage;    // input image to be composited over new image as example
    
    // create a new bitmap image context at the device resolution (retina/non-retina)
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), YES, 0.0);        
    
    // get context
    CGContextRef context = UIGraphicsGetCurrentContext();       
    
    // push context to make it current 
    // (need to do this manually because we are not drawing in a UIView)
    UIGraphicsPushContext(context);                             
    
    // drawing code comes here- look at CGContext reference
    // for available operations
    // this example draws the inputImage into the context
    [inputImage drawInRect:CGRectMake(0, 0, width, height)];
    
    // pop context 
    UIGraphicsPopContext();                             
    
    // get a UIImage from the image context- enjoy!!!
    UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
    
    // clean up drawing environment
    UIGraphicsEndImageContext();
    

    This code (source here) will create a new UIImage that you can use to initialize a UIImageView.

    0 讨论(0)
  • 2020-11-30 07:27

    You can try this, works perfect for me, it's UIImage category:

    - (UIImage *)drawImage:(UIImage *)inputImage inRect:(CGRect)frame {
        UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0);
        [self drawInRect:CGRectMake(0.0, 0.0, self.size.width, self.size.height)];
        [inputImage drawInRect:frame];
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return newImage;
    }
    

    or Swift:

    extension UIImage {
        func image(byDrawingImage image: UIImage, inRect rect: CGRect) -> UIImage! {
            UIGraphicsBeginImageContext(size)
            draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
            image.draw(in: rect)
            let result = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return result
        }
    }
    
    0 讨论(0)
提交回复
热议问题