Search code examples
iphoneobjective-ccore-graphics

How to create UIImage with vertical gradient using "from-color" and "to-color"


How to create new image just with gradient colors, using "from-color" and "to-color"?


Solution

  • A simpler answer, using a CAGradientLayer.

    CGSize size = CGSizeMake(width, height);
    CAGradientLayer *layer = [CAGradientLayer layer];
    layer.frame = CGRectMake(0, 0, size.width, size.height);
    layer.colors = @[(__bridge id)[UIColor blackColor].CGColor,  // start color
                     (__bridge id)[UIColor whiteColor].CGColor]; // end color
    
    UIGraphicsBeginImageContext(size);
    @try {
      [layer renderInContext:UIGraphicsGetCurrentContext()];
      UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    } @finally {
      UIGraphicsEndImageContext();
    }