美文网首页
iOS 绘制渐变色

iOS 绘制渐变色

作者: 最强的小强 | 来源:发表于2019-03-07 17:32 被阅读0次
CommonUtils.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface CommonUtils : NSObject
/**
 绘制渐变色颜色
 */
+(CAGradientLayer *)setGradualChangingColor: (UIView *)view
                                   fromColor: (NSString *)fromHexColorStr
                                     toColor: (NSString *)toHexColorStr;

/**
 获取16进制颜色
 */
+(UIColor *)colorWithHex:(NSString *)hexColor;
@end
CommonUtils.m
#import "CommonUtils.h"
#import <UIKit/UIKit.h>

#define ScreenWidth [UIScreen mainScreen].bounds.size.width
#define ScreenHeight [UIScreen mainScreen].bounds.size.height

@implementation CommonUtils

/**
 绘制渐变色颜色
 */
+ (CAGradientLayer *)setGradualChangingColor: (UIView *)view
                                   fromColor: (NSString *)fromHexColorStr
                                     toColor: (NSString *)toHexColorStr{
    //    CAGradientLayer类对其绘制渐变背景颜色、填充层的形状(包括圆角)
    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.frame = view.bounds;
    
    //  创建渐变色数组,需要转换为CGColor颜色
    gradientLayer.colors = @[(__bridge id)[self colorWithHex:fromHexColorStr].CGColor,(__bridge id)[self colorWithHex:toHexColorStr].CGColor];
    
    //  设置渐变颜色方向,左上点为(0,0), 右下点为(1,1)
    gradientLayer.startPoint = CGPointMake(0.5, 0);
    gradientLayer.endPoint = CGPointMake(0.5, 1);
    
    //  设置颜色变化点,取值范围 0.0~1.0
    gradientLayer.locations = @[@0,@1];
    
    return gradientLayer;
}

/**
 获取16进制颜色
 */
+ (UIColor *)colorWithHex:(NSString *)hexColor {
    hexColor = [hexColor stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    if ([hexColor length] < 6) {
        return nil;
    }
    if ([hexColor hasPrefix:@"#"]) {
        hexColor = [hexColor substringFromIndex:1];
    }
    NSRange range;
    range.length = 2;
    range.location = 0;
    NSString *rs = [hexColor substringWithRange:range];
    range.location = 2;
    NSString *gs = [hexColor substringWithRange:range];
    range.location = 4;
    NSString *bs = [hexColor substringWithRange:range];
    unsigned int r, g, b, a;
    [[NSScanner scannerWithString:rs] scanHexInt:&r];
    [[NSScanner scannerWithString:gs] scanHexInt:&g];
    [[NSScanner scannerWithString:bs] scanHexInt:&b];
    if ([hexColor length] == 8) {
        range.location = 4;
        NSString *as = [hexColor substringWithRange:range];
        [[NSScanner scannerWithString:as] scanHexInt:&a];
    } else {
        a = 255;
    }
    return [UIColor colorWithRed:((float)r / 255.0f) green:((float)g / 255.0f) blue:((float)b / 255.0f) alpha:((float)a / 255.0f)];
}
调用

[self.view.layer addSublayer: [CommonUtils setGradualChangingColor: self.view fromColor: @"fbc2eb" toColor: @"a18cd1"]];

相关文章

网友评论

      本文标题:iOS 绘制渐变色

      本文链接:https://www.haomeiwen.com/subject/zgkhpqtx.html