ifish/Ifish/Common/CommonUtils.m

749 lines
26 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// CommonUtils.m
// AS
//
// Created by 土土金服ios-01 on 2018/3/9.
// Copyright © 2018年 AS. All rights reserved.
//
#import "CommonUtils.h"
#import "YYCache.h"
#import <sys/utsname.h>
@implementation CommonUtils
//******************************输入内容正确性校验*****************************************//
#pragma 正则匹配用户密码6-15位数字和字母和符号的组合
+ (BOOL)checkPassword:(NSString *) password
{
NSString *pattern = @"^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,15}";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:password];
return isMatch;
}
#pragma 正则匹配用户姓名,8位的中文或英文或数字
+ (BOOL)checkUserName : (NSString *) userName
{
// NSString *pattern = @"^[\u4e00-\u9fa5]{1,8}$|^[0-9A-Za-z]{1,16}$";
NSString *pattern = @"^[0-9a-zA-Z\u4E00-\u9FA5]{1,8}";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:userName];
return isMatch;
}
#pragma 正则匹配用户身份证号15或18位
+ (BOOL)checkUserIdCard: (NSString *) userID
{
//长度不为18的都排除掉
if (userID.length!=18) {
return NO;
}
//校验格式
NSString *regex2 = @"^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$";
NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
BOOL flag = [identityCardPredicate evaluateWithObject:userID];
if (!flag) {
return flag; //格式错误
}else {
//格式正确在判断是否合法
//将前17位加权因子保存在数组里
NSArray * idCardWiArray = @[@"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2"];
//这是除以11后可能产生的11位余数、验证码也保存成数组
NSArray * idCardYArray = @[@"1", @"0", @"10", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2"];
//用来保存前17位各自乖以加权因子后的总和
NSInteger idCardWiSum = 0;
for(int i = 0;i < 17;i++)
{
NSInteger subStrIndex = [[userID substringWithRange:NSMakeRange(i, 1)] integerValue];
NSInteger idCardWiIndex = [[idCardWiArray objectAtIndex:i] integerValue];
idCardWiSum+= subStrIndex * idCardWiIndex;
}
//计算出校验码所在数组的位置
NSInteger idCardMod=idCardWiSum%11;
//得到最后一位身份证号码
NSString * idCardLast= [userID substringWithRange:NSMakeRange(17, 1)];
//如果等于2则说明校验码是10身份证号码最后一位应该是X
if(idCardMod==2)
{
if([idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"])
{
return YES;
}else
{
return NO;
}
}else{
//用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
if([idCardLast isEqualToString: [idCardYArray objectAtIndex:idCardMod]])
{
return YES;
}
else
{
return NO;
}
}
}
// NSString *pattern = @"(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$)";
// NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
// BOOL isMatch = [pred evaluateWithObject:idCard];
// return isMatch;
}
#pragma 正则匹配URL
+ (BOOL)checkURL : (NSString *) url
{
NSString *pattern = @"^[0-9A-Za-z]{1,50}";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:url];
return isMatch;
}
//手机号识别
+ (BOOL)checkTelNumber:(NSString *)telNumber{
if (telNumber.length != 11)
{
return NO;
}
/**
* 手机号码:
* 13[0-9], 14[5,7], 15[0, 1, 2, 3, 5, 6, 7, 8, 9], 17[6, 7, 8], 18[0-9], 170[0-9]
* 移动号段: 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
* 联通号段: 130,131,132,155,156,185,186,145,176,1709
* 电信号段: 133,153,180,181,189,177,1700
*/
NSString *MOBILE = @"^1(3[0-9]|4[0-9]|5[0-9]|6[0-9]|7[0-9]|8[0-9]|9[0-9])\\d{8}$";
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
if ([regextestmobile evaluateWithObject:telNumber] == YES)
{
return YES;
}
else
{
return NO;
}
}
/**
获取字符串中的数字内容
*/
+(NSString *)getNumberFromString:(NSString *)str{
NSScanner *scanner = [NSScanner scannerWithString:str];
[scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil];
float number;
[scanner scanFloat:&number];
NSString *num=[NSString stringWithFormat:@"%.2f",number];
return num;
}
+(BOOL)isNumber:(NSString *)str {
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];
if (str.length>0) {
//带小数点的数字
if ([str isEqualToString:@"."]) {
return YES;
}else
return NO;
}
return YES;
}
//*******************缓存处理***********************************************/
/**
加入缓存
*/
+ (void)SetCacheDataWithObject:(NSDictionary *)object WithPathName:(NSString *)withPathName{
YYCache *yyCache=[YYCache cacheWithName:@"IfishCache"];
//根据key写入缓存value
[yyCache setObject:object forKey:withPathName];
}
/**
通过key值取得缓存数据
*/
+(NSDictionary *)getCacheDataWithKey:(NSString *)cacheKey{
YYCache *yyCache=[YYCache cacheWithName:@"IfishCache"];
return (NSDictionary *)[yyCache objectForKey:cacheKey];
}
/**
移除特定缓存
*/
+(void)removeCacheWithKey:(NSString *)cacheKey{
YYCache *yyCache=[YYCache cacheWithName:@"IfishCache"];
[yyCache removeObjectForKey:cacheKey];
}
+(BOOL)isContainCache:(NSString *)cacheKey{
YYCache *yyCache=[YYCache cacheWithName:@"IfishCache"];
return [yyCache containsObjectForKey:cacheKey];
}
/**
移除所有缓存
*/
+(void)removeAllCache{
YYCache *yyCache=[YYCache cacheWithName:@"IfishCache"];
[yyCache removeAllObjects];
}
//移除所有缓存内容
//**************************获取当前版本号*********************************************//
+(NSString *)getVersion{
NSString *version = [FuncUserDefault strForKey:BundleVersion];
if (IsEmptyStr(version)) {
return @"";
}else{
return version;
}
}
+(NSString *)getUUID{
NSString *uuid = [FuncUserDefault strForKey:@"AS_uuid"];
if (uuid==nil) {
uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
[FuncUserDefault setStr:uuid key:@"AS_uuid"];
return uuid;
}else
return [FuncUserDefault strForKey:@"AS_uuid"];
}
//获取手机型号
+(NSString*)getPhoneModel
{
struct utsname systemInfo;
uname(&systemInfo);
NSString * phoneType = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
//iPhone
if([phoneType isEqualToString:@"iPhone4,1"]) return@"iPhone 4S";
if([phoneType isEqualToString:@"iPhone5,1"]) return@"iPhone 5";
if([phoneType isEqualToString:@"iPhone5,2"]) return@"iPhone 5";
if([phoneType isEqualToString:@"iPhone5,3"]) return@"iPhone 5c";
if([phoneType isEqualToString:@"iPhone5,4"]) return@"iPhone 5c";
if([phoneType isEqualToString:@"iPhone6,1"]) return@"iPhone 5s";
if([phoneType isEqualToString:@"iPhone6,2"]) return@"iPhone 5s";
if([phoneType isEqualToString:@"iPhone7,1"]) return@"iPhone 6 Plus";
if([phoneType isEqualToString:@"iPhone7,2"]) return@"iPhone 6";
if([phoneType isEqualToString:@"iPhone8,1"]) return@"iPhone 6s";
if([phoneType isEqualToString:@"iPhone8,2"]) return@"iPhone 6s Plus";
if([phoneType isEqualToString:@"iPhone8,4"]) return@"iPhone SE";
if([phoneType isEqualToString:@"iPhone9,1"]) return@"iPhone 7";
if([phoneType isEqualToString:@"iPhone9,2"]) return@"iPhone 7 Plus";
if([phoneType isEqualToString:@"iPhone10,1"]) return@"iPhone 8";
if([phoneType isEqualToString:@"iPhone10,4"]) return@"iPhone 8";
if([phoneType isEqualToString:@"iPhone10,2"]) return@"iPhone 8 Plus";
if([phoneType isEqualToString:@"iPhone10,5"]) return@"iPhone 8 Plus";
if([phoneType isEqualToString:@"iPhone10,3"]) return@"iPhone X";
if([phoneType isEqualToString:@"iPhone10,6"]) return@"iPhone X";
return @"iPhone";
}
/**
获取当前时间戳
*/
+(NSString *)getCurrentTimestamp{
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];//获取当前时间0秒后的时间
NSTimeInterval time=[date timeIntervalSince1970];// *1000 是精确到毫秒,不乘就是精确到秒
NSString *timeString = [NSString stringWithFormat:@"%.0f", time];
return timeString;
}
+ (void)interfaceOrientation:(UIInterfaceOrientation)orientation
{
if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
SEL selector = NSSelectorFromString(@"setOrientation:");
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
[invocation setSelector:selector];
[invocation setTarget:[UIDevice currentDevice]];
int val = orientation;
// 从2开始是因为0 1 两个参数已经被selector和target占用
[invocation setArgument:&val atIndex:2];
[invocation invoke];
}
}
+ (UIBarButtonItem*)ItemWithTitle:(NSString *)title target:(id)target action:(SEL)action titleColor:(UIColor*)titleColor
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
if(title.length) [button setTitle:title forState:UIControlStateNormal];
button.titleLabel.font = [UIFont systemFontOfSize:16];
if (titleColor==nil) titleColor = [UIColor whiteColor];
[button setTitleColor:titleColor forState:UIControlStateNormal];
[button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateDisabled];
[button sizeToFit];
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
return [[UIBarButtonItem alloc] initWithCustomView:button];
}
+ (NSDictionary *)getSSIDInfo
{
NSArray *interfaceNames = CFBridgingRelease(CNCopySupportedInterfaces());
NSDictionary *SSIDInfo;
for (NSString *interfaceName in interfaceNames) {
SSIDInfo = CFBridgingRelease(
CNCopyCurrentNetworkInfo((__bridge CFStringRef)interfaceName));
BOOL isNotEmpty = (SSIDInfo.count > 0);
if (isNotEmpty) {
break;
}
}
return SSIDInfo;
}
//view围绕任意一点旋转
CGAffineTransform GetCGAffineTransformRotateAroundPoint(float centerX, float centerY ,float x ,float y ,float angle)
{
x = x - centerX; //计算(x,y)从(0,0)为原点的坐标系变换到(CenterX CenterY)为原点的坐标系下的坐标
y = y - centerY; //(00)坐标系的右横轴、下竖轴是正轴,(CenterX,CenterY)坐标系的正轴也一样
CGAffineTransform trans = CGAffineTransformMakeTranslation(x, y);
trans = CGAffineTransformRotate(trans,angle);
trans = CGAffineTransformTranslate(trans,-x, -y);
return trans;
}
//**************************获取token*********************************************//
+(NSString *)getToken{
NSString *token = [FuncUserDefault strForKey:kToken];
if (IsEmptyStr(token)) {
return @"";
}else{
return token;
}
}
+(NSString *)getDeviceToken{
NSString *token = [FuncUserDefault strForKey:kDeviceToken];
if (IsEmptyStr(token)) {
return [self getUUID];
}else{
return token;
}
}
//**************************获取userName*********************************************//
+(NSString *)getUsername{
NSString *username = [FuncUserDefault strForKey:kUsername];
if (IsEmptyStr(username)) {
return @"";
}else{
return username;
}
}
/**获取昵称*/
+(NSString *)getNikename
{
NSString *nikename = [FuncUserDefault strForKey:kNikename];
if (IsEmptyStr(nikename)) {
return @"";
}else{
return nikename;
}
}
//是否登录
+(BOOL)isLogin
{
NSString *token = [FuncUserDefault strForKey:kToken];
if (!IsEmptyStr(token)) {
return YES;
}else
return NO;
}
//是否需要版本升级
+(BOOL)isUpdate{
NSString *version = [FuncUserDefault strForKey:BundleVersion];
if (IsEmptyStr(version)) {
return NO;
}else{
if ([version isEqualToString:Version_Code]) {
return NO;
}else{
return YES;
}
}
}
/**
是否已经托管到汇付
*/
+(BOOL)isTrustReg{
NSString *str = @"";
if (IsEmptyStr(str)||[str isEqualToString:@"-1"]) {
return NO;
}else
return YES;
}
/**
是否实名认证过
*/
+(BOOL)isVerifyRealName{
// NSString *str = [FuncUserDefault strForKey:isCertificationed];
// if (IsEmptyStr(str)||[str isEqualToString:@"-1"]) {
// return NO;
// }else
return YES;
}
/*! 获取时间差(秒) */
+ (int)getSecondForFromDate:(NSDate *)fromdate toDate:(NSDate *)todate {
NSTimeInterval fromInt = [fromdate timeIntervalSince1970]; // 获取离1970年间隔
NSTimeInterval toInt = [todate timeIntervalSince1970];
NSTimeInterval interval = toInt - fromInt; // 获取时间差值
return interval*1;
}
//获取时间差48小时内需要倒计时显示
+ (NSInteger)getDifferenceByDate:(NSString *)creat_time {
if (IsEmptyStr(creat_time)) {
return 0;
}
NSDate *nowDate = [NSDate date]; // 当前时间
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH-mm-ss";
NSDate *creat = [formatter dateFromString:creat_time]; // 传入的时间
NSTimeInterval timeInterval = [creat timeIntervalSinceDate:nowDate];
if (timeInterval<=0) {
return 0;
}else{
return [[NSString stringWithFormat:@"%.0f",timeInterval] integerValue];
}
// NSCalendar *calendar = [NSCalendar currentCalendar];
// NSCalendarUnit unit = NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
// NSDateComponents *compas = [calendar components:unit fromDate:nowDate toDate:creat options:0];
//
//
// NSInteger day= [compas day];
// NSInteger mounth = [compas month];
// NSInteger year = [compas year];
// NSInteger hour = [compas hour];
// NSInteger minute = [compas minute];
// NSInteger second = [compas second];
// if(day<0)
// return 0;
// NSInteger sss= [compas second]+compas.hour*HOUR+[compas minute]*MINUTE+day*DAY;
// if(sss<0)
// return 0;
// return sss;
}
//获取当前时间戳
+(NSString *)getNowTimeTimestamp{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
//设置时区,这个对于时间的处理有时很重要
NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
[formatter setTimeZone:timeZone];
NSDate *datenow = [NSDate date];//现在时间,你可以输出来看下是什么格式
NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]];
return timeSp;
}
//获取倒计时字符串
+(NSString *)getCountDownTime:(NSInteger)timeInval
{
NSInteger hour=timeInval/HOUR;
NSInteger day=(hour-(hour%24))/24;
NSString *str_day = [NSString stringWithFormat:@"%ld",day];
NSString *str_hour = [NSString stringWithFormat:@"%ld",hour%24];
NSString *str_minute = [NSString stringWithFormat:@"%ld",(timeInval%HOUR)/MINUTE];
NSString *str_second = [NSString stringWithFormat:@"%ld",timeInval%MINUTE];
//修改倒计时标签现实内容
NSString * countDown=[NSString stringWithFormat:@"%@天%@时%@分%@秒",str_day,str_hour,str_minute, str_second];
if ([[countDown substringToIndex:2] isEqualToString:@"0天"]) {
countDown = [countDown stringByReplacingOccurrencesOfString:@"0天" withString:@""];
}
if ([[countDown substringToIndex:2] isEqualToString:@"0时"]) {
countDown = [countDown stringByReplacingOccurrencesOfString:@"0时" withString:@""];
}
if ([[countDown substringToIndex:2] isEqualToString:@"0分"]) {
countDown = [countDown stringByReplacingOccurrencesOfString:@"0分" withString:@""];
}
return countDown;
}
+ (int)convertToInt:(NSString*)strtemp//判断中英混合的的字符串长度
{
int strlength = 0;
char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];
for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) {
if (*p) {
p++;
strlength++;
}
else {
p++;
}
}
return strlength;
}
//判断字符串中是否包含空格
+ (BOOL)checkEmptyString:(NSString *)string {
NSRange range = [string rangeOfString:@" "];
if (range.location != NSNotFound) {
return YES;
}
return NO;
}
+(NSString*)getNotNilStr:(NSString*)str{
if ([str isKindOfClass:[NSString class]] && str.length>0) {
return str;
}else if([str isKindOfClass:[NSNumber class]] && str){
return ((NSNumber*)str).stringValue;
}else{
return @"";
}
}
+ (BOOL)isIphoneX {
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
return ([[UIApplication sharedApplication] statusBarFrame].size.height> 20);
}else{
return NO;
}
}
//判断是否为空或全为空格
+ (BOOL)isEmptyWithString:(NSString *)str {
if (str == nil) {
return YES;
} else if (!str.length) {
return YES;
} else {
NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *string = [str stringByTrimmingCharactersInSet:set];
if (string.length == 0) {
return YES;
} else {
return NO;
}
}
}
+ (NSString *)arrayToJSONString:(NSArray *)array
{
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array
options:kNilOptions
error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData
encoding:NSUTF8StringEncoding];
return jsonString;
}
+ (UIViewController *)appRootViewController
{
UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
UIViewController *topVC = appRootVC;
while (topVC.presentedViewController) {
topVC = topVC.presentedViewController;
}
if ([topVC isKindOfClass:[UITabBarController class]]) {
topVC = [(UITabBarController *)topVC selectedViewController];
}
if ([topVC isKindOfClass:[UINavigationController class]]) {
topVC = [(UINavigationController *)topVC topViewController];
}
return topVC;
}
+(void)showAlerWithTitle:(NSString*)title withMsg:(NSString*)msg{
[self showAlertControllerWithTitle:title withMsg:msg target:[self appRootViewController]];
}
+(void)showAlertControllerWithTitle:(NSString*)title withMsg:(NSString*)msg target:(id)target{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *alertAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:alertAction];
[target presentViewController:alertController animated:YES completion:nil];
}
/**
获取千分位的数字字符串
*/
+(NSString *)getHanleNums:(NSString *)numbers{
NSString *resault ;
if ([numbers isEqualToString:@"-"]) {
return resault;
}
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = kCFNumberFormatterDecimalStyle;
if ([numbers rangeOfString:@"."].location!=NSNotFound) {
[formatter setPositiveFormat:@"###,##0.00"];//千分位格式
}else
[formatter setPositiveFormat:@"###,##0"];//千分位格式,带小数点
resault = [formatter stringFromNumber:[NSNumber numberWithDouble:[numbers doubleValue]]];//此处使用doublevale防止失真
return resault;
}
//动态获取label高度
+(CGFloat)getSpaceLabelHeight:(NSString*)str withFont:(UIFont*)font withWidth:(CGFloat)width lineSpace:(CGFloat)lineSpace{
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
paraStyle.lineBreakMode = NSLineBreakByCharWrapping;
paraStyle.alignment = NSTextAlignmentLeft;
//获得带有行间距为2的高度
paraStyle.lineSpacing = lineSpace;
paraStyle.hyphenationFactor = 1.0;
paraStyle.firstLineHeadIndent = 0.0;
paraStyle.paragraphSpacingBefore = 0.0;
paraStyle.headIndent = 0;
paraStyle.tailIndent = 0;
//字间距为0
NSDictionary *dic = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paraStyle, NSKernAttributeName:@0.f
};
CGSize size = [str boundingRectWithSize:CGSizeMake(width, 999.f) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine attributes:dic context:nil].size;
return size.height ;
}
/**
设置带有行间距的内容
*/
+(void)setAttString:(NSString *)title withLineSpace:(CGFloat)space titleLabel:(UILabel *) titleLabel
{
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:title];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:space];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [title length])];
titleLabel.attributedText = attributedString;
}
//设置带圆角带阴影
+(void)setShadowCornerRadiusToView:(UIView *)view{
view.layer.cornerRadius = kSizeFrom750(10);
view.layer.shadowColor = [UIColor grayColor].CGColor;
view.layer.shadowOffset = CGSizeMake(0, kSizeFrom750(10));
view.layer.shadowOpacity = 0.2;
view.layer.shadowRadius = kSizeFrom750(8);
}
//给view添加渐变色
+(void)addGradientLayer:(UIView *)view startColor:(UIColor *)startColor endColor:(UIColor *)endColor withDirection:(GradientDirectionType)direction
{
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = @[(__bridge id)startColor.CGColor, (__bridge id)endColor.CGColor];
if (direction==DirectionFromTop) {//从上到下
gradientLayer.startPoint = CGPointMake(0.5, 0);//绘图起始点x/Y//顶部中间位置
gradientLayer.locations = @[@(0.5),@(1.0)];
gradientLayer.endPoint = CGPointMake(0.5, 1.0);
}else{
gradientLayer.startPoint = CGPointMake(0, 0.5);//绘图起始点x/Y//左边距中间位置
gradientLayer.locations = @[@(0.5),@(1.0)];
gradientLayer.endPoint = CGPointMake(1.0, 0.5);
}
gradientLayer.frame = view.bounds;
[view.layer addSublayer:gradientLayer];
}
/**
设置字符串的字体大小和颜色
@param string 当前处理的可变字符串
@param range range
@param fontValue 字体
@param colorString 颜色
@param spacingBeforeValue 首行缩进
@return
*/
+ (NSMutableAttributedString *)diffierentFontWithString:(NSString *)string rang:(NSRange)range font:(UIFont *)font color:(UIColor *)color spacingBeforeValue:(CGFloat)spacingBeforeValue lineSpace:(CGFloat)lineSpace{
if (IsEmptyStr(string)) {
return [NSMutableAttributedString new];
}
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:string];
if (string.length) {
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:lineSpace];
paragraphStyle.hyphenationFactor = 1.0;
paragraphStyle.firstLineHeadIndent = 0.0;
paragraphStyle.paragraphSpacingBefore = spacingBeforeValue;
paragraphStyle.headIndent = 0;
paragraphStyle.tailIndent = 0;
paragraphStyle.alignment = NSTextAlignmentCenter;
[attributeString addAttributes:@{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle} range:range];
if (color!=nil) {
[attributeString addAttribute:NSForegroundColorAttributeName value:color range:range];
}
}
return attributeString;
}
//获取随机数
+ (NSString *)getRandomStringWithNum:(NSInteger)num
{
NSString *string = [[NSString alloc]init];
for (int i = 0; i < num; i++) {
int number = arc4random() % 36;
if (number < 10) {
int figure = arc4random() % 10;
NSString *tempString = [NSString stringWithFormat:@"%d", figure];
string = [string stringByAppendingString:tempString];
}else {
int figure = (arc4random() % 26) + 97;
char character = figure;
NSString *tempString = [NSString stringWithFormat:@"%c", character];
string = [string stringByAppendingString:tempString];
}
}
return string;
}
@end