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"]];
网友评论