Skip to content

Instantly share code, notes, and snippets.

@collindonnell
Created December 11, 2011 03:58
Show Gist options
  • Save collindonnell/1458205 to your computer and use it in GitHub Desktop.
Save collindonnell/1458205 to your computer and use it in GitHub Desktop.
Draw a two part gradient in a given graphics context in one line of code.
- (void)drawGradientInContext:(CGContextRef)context withStartPosition:(CGPoint)startPosition endPosition:(CGPoint)endPosition startColor:(UIColor *)startColor endColor:(UIColor *)endColor
{
CGFloat locations[2] = {0.0, 1.0};
const CGFloat *startComponents = CGColorGetComponents(startColor.CGColor);
const CGFloat *endComponents = CGColorGetComponents(endColor.CGColor);
CGFloat components[8] = {startComponents[0], startComponents[1], startComponents[2], startComponents[3], endComponents[0], endComponents[1], endComponents[2], endComponents[3]};
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, components, locations, 2);
CGContextDrawLinearGradient(context, gradient, startPosition, endPosition, 0);
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment