iOS 自定义颜色渐变图片

typedef NS_ENUM(NSInteger, GradientDirection) {
     GradientDirectionTopToBottom = 0,    // 从上往下 渐变
     GradientDirectionLeftToRight,        // 从左往右
     GradientDirectionBottomToTop,      // 从下往上
     GradientDirectionRightToLeft      // 从右往左
};


+(UIImage*)gradientImageWithBounds:(CGRect)bounds andColors:(NSArray*)colors andGradientType:(GradientDirection)gradientType{
    NSMutableArray *ar = [NSMutableArray array];

    for(UIColor *c in colors) {
       [ar addObject:(id)c.CGColor];
    }
    UIGraphicsBeginImageContextWithOptions(bounds.size, YES, 1);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);
    CGColorSpaceRef colorSpace = CGColorGetColorSpace([[colors lastObject] CGColor]);
    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)ar, NULL);
    CGPoint startPt =  CGPointMake(0.0, 0.0);
    CGPoint endPt =  CGPointMake(0.0, 0.0);

   switch (gradientType) {
       case GradientDirectionTopToBottom:
          startPt= CGPointMake(0.0, 0.0);
          endPt= CGPointMake(0.0, bounds.size.height);
       break;
       case GradientDirectionLeftToRight:
          startPt = CGPointMake(0.0, 0.0);
          endPt = CGPointMake(bounds.size.width, 0.0);
       break;
       case GradientDirectionBottomToTop:
          startPt = CGPointMake(0.0, bounds.size.height);
          endPt = CGPointMake(0.0, 0.0);
       break;
       case GradientDirectionRightToLeft:
          startPt = CGPointMake(bounds.size.width, 0.0);
          endPt = CGPointMake(0, 0.0);
       break;
  }
  CGContextDrawLinearGradient(context, gradient, startPt, endPt, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
  UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
  CGGradientRelease(gradient);
  CGContextRestoreGState(context);
  CGColorSpaceRelease(colorSpace);
  UIGraphicsEndImageContext();
  return image;
}

调用方法:

   UIImage *backImage = [UIImage gradientImageWithBounds:CGRectMake(0, 0,KScreenWidth, KNavHeight) andColors:@[UIColorFromRGB(0x8C0513), UIColorFromRGB(0xA80E0E)] andGradientType:GradientDirectionRightToLeft];
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容