You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

837 lines
33 KiB

//
// myHleper.m
// myWatch
//
// Created by xTT on 16/3/16.
// Copyright © 2016年 xTT. All rights reserved.
//
#import "myHelper.h"
#import <Photos/Photos.h>
#import "User.h"
#import "Device.h"
//#import "SVProgressHUD.h"
@implementation myHelper
+ (UIImage *)getImageWithName:(NSString *)name{
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%@%@",THEME_NAME,name]];
if (!image) {
return [UIImage imageNamed:name];
}else{
return image;
}
}
+ (UIFont *)fixFoneSize:(NSInteger)size font:(UIFont *)font{
return [font fontWithSize:size * SWIDTH / 320];
}
+ (NSString *)getDateFormatWithStr:(NSString *)dateFormat date:(NSDate *)date{
NSDateFormatter*dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:dateFormat];
return [dateFormatter stringFromDate:date];
}
+ (NSString *)getDateFormatWithStr:(NSString *)dateFormat timeInterval:(NSTimeInterval)timeInterval{
return [self getDateFormatWithStr:dateFormat date:[NSDate dateWithTimeIntervalSince1970:timeInterval]];
}
+ (NSDate *)getDateWithStr:(NSString *)dateString dateFormat:(NSString *)dateFormat{
dateString = [dateString stringByReplacingOccurrencesOfString:@"T" withString:@" "];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat: dateFormat];
NSDate *destDate= [dateFormatter dateFromString:dateString];
return destDate;
}
///< 获取当前时间的: 前一周(day:-7)丶前一个月(month:-30)丶前一年(year:-1)的时间 NSDate
+ (NSDate *)ddpGetExpectTimestamp:(NSInteger)year month:(NSUInteger)month day:(NSUInteger)day {
///< 当前时间
NSDate *currentdata = [NSDate date];
///< NSCalendar -- 日历类,它提供了大部分的日期计算接口,并且允许您在NSDate和NSDateComponents之间转换
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
/*
///< NSDateComponents:时间容器,一个包含了详细的年月日时分秒的容器。
///< 下例:获取指定日期的年,月,日
NSDateComponents *comps = nil;
comps = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:currentdata];
NSLog(@"年 year = %ld",comps.year);
NSLog(@"月 month = %ld",comps.month);
NSLog(@"日 day = %ld",comps.day);*/
NSDateComponents *datecomps = [[NSDateComponents alloc] init];
[datecomps setYear:year?:0];
[datecomps setMonth:month?:0];
[datecomps setDay:day?:0];
///< dateByAddingComponents: 在参数date基础上,增加一个NSDateComponents类型的时间增量
NSDate *calculatedate = [calendar dateByAddingComponents:datecomps toDate:currentdata options:0];
// ///< 打印推算时间
// NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
// NSString *calculateStr = [formatter stringFromDate:calculatedate];
//
// xLog(@"calculateStr 推算时间: %@",calculateStr );
//
// ///< 预期的推算时间
// NSString *result = [NSString stringWithFormat:@"%ld", (long)[calculatedate timeIntervalSince1970]];
return calculatedate;
}
+ (BOOL)isEqualImage:(UIImage *)image1 image2:(UIImage *)image2{
NSData *data1 = UIImagePNGRepresentation(image1);
NSData *data = UIImagePNGRepresentation(image2);
if ([data isEqual:data1]) {
return YES;
}
return NO;
}
+ (UIColor *)colorWithHexString:(NSString *)color
{
NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
// String should be 6 or 8 characters
if ([cString length] < 6) {
return [UIColor clearColor];
}
// 判断前缀
if ([cString hasPrefix:@"0X"])
cString = [cString substringFromIndex:2];
if ([cString hasPrefix:@"#"])
cString = [cString substringFromIndex:1];
if ([cString length] != 6)
return [UIColor clearColor];
// 从六位数值中找到RGB对应的位数并转换
NSRange range;
range.location = 0;
range.length = 2;
//R、G、B
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];
// Scan values
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f];
}
#pragma mark 二维码 URL获取 参数
+ (NSMutableDictionary *)getDicWithUrl:(NSString *)urlStr{
//获取问号的位置,问号后是参数列表
NSRange range = [urlStr rangeOfString:@"?"];
if (range.location != NSNotFound) {
//获取参数列表
NSString *propertys = [urlStr substringFromIndex:(int)(range.location+1)];
//进行字符串的拆分,通过&来拆分,把每个参数分开
NSArray *subArray = [propertys componentsSeparatedByString:@"&"];
//把subArray转换为字典
//tempDic中存放一个URL中转换的键值对
NSMutableDictionary *tempDic = [NSMutableDictionary dictionary];
[subArray enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL * _Nonnull stop) {
//在通过=拆分键和值
NSArray *dicArray = [obj componentsSeparatedByString:@"="];
if (dicArray.count >= 2) {
//给字典加入元素
[tempDic setObject:dicArray[1] forKey:dicArray[0]];
}
}];
return tempDic;
}
return nil;
}
#pragma mark 将头像图片加上边框
+ (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2
{
UIGraphicsBeginImageContextWithOptions(image2.size, NO, 2.0);
//Draw 头像
[image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
//Draw 外框
[image2 drawInRect:CGRectMake(0, 0, image2.size.width, image2.size.height)];
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultImage;
}
#pragma mark 将UIImage变为圆角
+ (void) addRoundedRectToPath:(CGContextRef)context
rect:(CGRect )rect
ovalWidth:(float) ovalWidth
ovalHeight:(float) ovalHeight
{
float fw,fh;
if (ovalWidth == 0 || ovalHeight == 0) {
CGContextAddRect(context, rect);
return;
}
CGContextSaveGState(context);
CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect));
CGContextScaleCTM(context, ovalWidth, ovalHeight);
fw = CGRectGetWidth(rect) / ovalWidth;
fh = CGRectGetHeight(rect) / ovalHeight;
CGContextMoveToPoint(context, fw, fh/2); // Start at lower right corner
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); // Top right corner
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner
CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); // Lower left corner
CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // Back to lower right
CGContextClosePath(context);
CGContextRestoreGState(context);
}
+ (id) createRoundedRectImage:(UIImage*)image addImage:(UIImage *)addImage size:(CGSize)size{
return [self createRoundedRectImage:image addImage:addImage size:size oval:headOval];
}
+ (id) createRoundedRectImage:(UIImage*)image addImage:(UIImage *)addImage size:(CGSize)size oval:(CGFloat)oval{
addImage = [self changeImageSize:addImage size:size];
// the size of CGContextRef
CGFloat w = size.width * addImage.scale;
CGFloat h = size.height * addImage.scale;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, (int)w, (int)h, 8, 4 * (int)w, colorSpace,kCGImageAlphaPremultipliedFirst);
CGRect rect = CGRectMake(0, 0, w, h);
CGContextBeginPath(context);
[self addRoundedRectToPath:context rect:rect ovalWidth:w / oval ovalHeight:h / oval];
CGContextClosePath(context);
CGContextClip(context);
CGContextDrawImage(context, CGRectMake(0, 0, w, h), image.CGImage);
CGImageRef imageMasked = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
return [self addImage:[UIImage imageWithCGImage:imageMasked
scale:[UIScreen mainScreen].scale
orientation:image.imageOrientation]
toImage:addImage];
}
+ (UIImage *)changeImageSize:(UIImage *)image size:(CGSize)size
{
UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultImage;
}
//剪裁&压缩图片
+ (UIImage*) scalingAndCroppingToSize:(CGSize)targetSize withImage:(UIImage*)sourceImage
{
UIImage *newImage = nil;
CGSize imageSize = sourceImage.size;
CGFloat width = imageSize.width;
CGFloat height = imageSize.height;
CGFloat targetWidth = targetSize.width;
CGFloat targetHeight = targetSize.height;
CGFloat scaleFactor = 0.0;
CGFloat scaledWidth = targetWidth;
CGFloat scaledHeight = targetHeight;
//剪裁点的位置,以3*2长方形剪裁为2*2正方形为例,截取image中心部分,剪切点为(0,0.5)
CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
if (CGSizeEqualToSize(imageSize, targetSize) == NO)
{
//compress scale
CGFloat widthFactor = targetWidth / width;
CGFloat heightFactor = targetHeight / height;
//set scaleFactoras lesser scale,fit lesser scale
if (widthFactor > heightFactor)
scaleFactor = widthFactor; // scale to fit height
else
scaleFactor = heightFactor; // scale to fit width
//reset the target size with the new scale factor
scaledWidth = width * scaleFactor;
scaledHeight = height * scaleFactor;
// get cropping point
if (widthFactor > heightFactor)
{
thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
}
else if (widthFactor < heightFactor)
{
thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
}
}
UIGraphicsBeginImageContextWithOptions(targetSize, NO, [UIScreen mainScreen].scale);
CGRect thumbnailRect = CGRectZero;
thumbnailRect.origin = thumbnailPoint;
thumbnailRect.size.width = scaledWidth;
thumbnailRect.size.height = scaledHeight;
//corpping image to special rectangle
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
if(newImage == nil)
xLog(@"could not scale image");
//pop the context to get back to the default
UIGraphicsEndImageContext();
return newImage;
}
#pragma 添加阴影
+ (void)addShadow:(UIImageView *)imageView image:(UIImage *)image{
imageView.clipsToBounds = NO;
//创建对象
CALayer *subLayer = [CALayer layer];
//底色
subLayer.backgroundColor = [UIColor clearColor].CGColor;
//阴影大小
subLayer.shadowOffset = CGSizeMake(4, 4);
//阴影的深浅 float数值 越小颜色越重
subLayer.shadowRadius = 4.0;
//阴影颜色
subLayer.shadowColor = [UIColor darkGrayColor].CGColor;
//阴影透明度
subLayer.shadowOpacity = 0.8;
//大小
subLayer.frame = CGRectMake(0, 0, CGRectGetWidth(imageView.frame) - 2, CGRectGetHeight(imageView.frame) - 2);
//边框颜色
// subLayer.borderColor = [UIColor clearColor].CGColor;
//边框宽度
// subLayer.borderWidth = 0;
//设置委圆角
subLayer.cornerRadius = CGRectGetWidth(imageView.frame)/2;
CALayer *imageLayer = [CALayer layer];
//层的 大小
imageLayer.frame = CGRectMake(0, 0, CGRectGetWidth(imageView.frame) - 2, CGRectGetHeight(imageView.frame) - 2);
//设置委圆角
imageLayer.cornerRadius = CGRectGetWidth(imageView.frame)/2;
//设置剪辑
imageLayer.masksToBounds = YES;
//加载图片
imageLayer.contents = (id)image.CGImage;
// 加载 层
[subLayer addSublayer:imageLayer];
[imageView.layer addSublayer:subLayer];
}
+ (void)addShadow:(UIImageView *)imageView imageName:(NSString *)imageName
{
}
+ (NSString *)getWeekDayStr:(NSString *)week{
if (week.length > 0) {
NSArray *arr = [self getWeekStr:week removedNil:YES];
if (arr.count == 7) {
return @"每天";
}else if (arr.count > 0) {
return [arr componentsJoinedByString:@""];
}
return @"一次";
}
return nil;
}
+ (NSMutableArray *)getWeekStr:(NSString *)string removedNil:(BOOL)isRemoved{
NSMutableArray *weekArr = [NSMutableArray arrayWithArray:@[@"",@"",@"",@"",@"",@"",@""]];
[string enumerateSubstringsInRange:NSMakeRange(0, string.length)
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop)
{
NSString *str = @"";
if ([substring isEqualToString:@"1"]) {
switch (substringRange.location) {
case 0:str = @"周一";break;
case 1:str = @"周二";break;
case 2:str = @"周三";break;
case 3:str = @"周四";break;
case 4:str = @"周五";break;
case 5:str = @"周六";break;
case 6:str = @"周日";break;
default:
break;
}
}
[weekArr replaceObjectAtIndex:substringRange.location withObject:str];
}];
if (isRemoved) {
[weekArr removeObject:@""];
}
return weekArr;
}
+ (NSMutableArray *)getWeekDayDataArr:(NSArray *)arr{
NSMutableArray *weekArr = [NSMutableArray arrayWithArray:@[@"0",@"0",@"0",@"0",@"0",@"0",@"0"]];
[arr enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) {
if ([obj isEqualToString:@"周一"]) {
[weekArr replaceObjectAtIndex:idx withObject:@"1"];
}else if ([obj isEqualToString:@"周二"]) {
[weekArr replaceObjectAtIndex:idx withObject:@"1"];
}else if ([obj isEqualToString:@"周三"]) {
[weekArr replaceObjectAtIndex:idx withObject:@"1"];
}else if ([obj isEqualToString:@"周四"]) {
[weekArr replaceObjectAtIndex:idx withObject:@"1"];
}else if ([obj isEqualToString:@"周五"]) {
[weekArr replaceObjectAtIndex:idx withObject:@"1"];
}else if ([obj isEqualToString:@"周六"]) {
[weekArr replaceObjectAtIndex:idx withObject:@"1"];
}else if ([obj isEqualToString:@"周日"]) {
[weekArr replaceObjectAtIndex:idx withObject:@"1"];
}
}];
return weekArr;
}
+ (UIAlertController *)getAlertWithTitle:(NSString *)title
actionTitles:(NSArray *)actionTitles
block:(void (^)(UIAlertAction *action))block{
return [myHelper getAlertWithTitle:title
actionTitles:actionTitles
style:UIAlertControllerStyleActionSheet
block:block];
}
+ (UIAlertController *)getAlertWithTitle:(NSString *)title
actionTitles:(NSArray *)actionTitles
style:(UIAlertControllerStyle)style
block:(void (^)(UIAlertAction *action))block{
UIAlertController *sheet = [UIAlertController alertControllerWithTitle:title
message:nil
preferredStyle:style];
[actionTitles enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL * _Nonnull stop) {
UIAlertAction *action = [UIAlertAction actionWithTitle:NSLocalizedStringFromTable(obj, @"Localization", @"")
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
block(action);
}];
[sheet addAction:action];
}];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消"
style:UIAlertActionStyleCancel
handler:^(UIAlertAction * _Nonnull action)
{}];
[sheet addAction:cancelAction];
return sheet;
}
+ (UIAlertController *)getAlertWithTitle:(NSString *)title
message:(NSString *) msg
actionTitles:(NSArray *)actionTitles
style:(UIAlertControllerStyle)style
block:(void (^)(UIAlertAction *action))block{
UIAlertController *sheet = [UIAlertController alertControllerWithTitle:title
message:msg
preferredStyle:style];
NSMutableAttributedString *messageStr = [[NSMutableAttributedString alloc] initWithString:msg];
[messageStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16] range:NSMakeRange(0, msg.length)];
[messageStr addAttribute:NSForegroundColorAttributeName value:[UIColor systemGrayColor] range:NSMakeRange(0, msg.length)];
[sheet setValue:messageStr forKey:@"attributedMessage"];
[actionTitles enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL * _Nonnull stop) {
UIAlertAction *action = [UIAlertAction actionWithTitle:NSLocalizedStringFromTable(obj, @"Localization", @"")
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
block(action);
}];
[sheet addAction:action];
}];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消"
style:UIAlertActionStyleCancel
handler:^(UIAlertAction * _Nonnull action)
{
block(action);
}];
[sheet addAction:cancelAction];
return sheet;
}
+ (UIAlertController *)getAlertWithPicture:(void (^)(UIImagePickerController *imagePickerVC))block{
if([AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo] == AVAuthorizationStatusDenied){
// [UICommon MessageErrorText:NSLocalizedStringFromTable(@"请在iOS设备的 设置-隐私-相机 中允许访问相机。", @"Localization", @"")];
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:[NSString stringWithFormat:@"请为%@打开相机权限",APPName] message:@"" style:LGAlertViewStyleAlert buttonTitles:@[@"设置"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) {
NSURL * url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if([[UIApplication sharedApplication] canOpenURL:url]) {
NSURL*url =[NSURL URLWithString:UIApplicationOpenSettingsURLString];           [[UIApplication sharedApplication] openURL:url];
}
} cancelHandler:nil destructiveHandler:nil];
[alertView showAnimated:YES completionHandler:nil];
}else if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusDenied){
// [UICommon MessageErrorText:NSLocalizedStringFromTable(@"请在iOS设备的 设置-隐私-照片 中允许访问照片。", @"Localization", @"")];
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:[NSString stringWithFormat:@"请为%@打开相机权限",APPName] message:@"" style:LGAlertViewStyleAlert buttonTitles:@[@"设置"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) {
NSURL * url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if([[UIApplication sharedApplication] canOpenURL:url]) {
NSURL*url =[NSURL URLWithString:UIApplicationOpenSettingsURLString];           [[UIApplication sharedApplication] openURL:url];
}
} cancelHandler:nil destructiveHandler:nil];
[alertView showAnimated:YES completionHandler:nil];
}else{
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.allowsEditing = YES;
UIAlertController *sheet = [UIAlertController alertControllerWithTitle:nil
message:nil
preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction *cameraAction = [UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"拍照", @"Localization", @"")
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
block(imagePickerController);
}];
UIAlertAction *libraryAction = [UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"从相册选择", @"Localization", @"")
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
block(imagePickerController);
}];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消"
style:UIAlertActionStyleCancel
handler:^(UIAlertAction * _Nonnull action)
{}];
[sheet addAction:cameraAction];
[sheet addAction:libraryAction];
[sheet addAction:cancelAction];
return sheet;
}
return nil;
}
+ (NSMutableString *)secToStr:(NSInteger)sec{
NSMutableString *timeStr = [NSMutableString string];
NSInteger day = sec / (60 * 60 * 24);
sec -= day * 60 * 60 * 24;
NSInteger ousr = sec / (60 * 60);
sec -= ousr * 60 * 60;
NSInteger minutes = sec / 60;
sec -= minutes * 60;
if (day > 0) {
[timeStr appendString:[NSString stringWithFormat:@"%zi天",day]];
}
if (ousr > 0) {
[timeStr appendString:[NSString stringWithFormat:@"%zi小时",ousr]];
}
if (day > 0) {
[timeStr appendString:[NSString stringWithFormat:@"%zi分",minutes]];
return timeStr;
}
if (sec < 10) {
[timeStr appendString:[NSString stringWithFormat:@"%zi分0%zi秒",minutes,sec]];
}else{
[timeStr appendString:[NSString stringWithFormat:@"%zi分%zi秒",minutes,sec]];
}
return timeStr;
}
+ (NSString *)distanceTimeWithBeforeTime:(double)beTime
{
NSTimeInterval now = [[NSDate date]timeIntervalSince1970];
double distanceTime = now - beTime;
NSString * distanceStr;
NSDate * beDate = [NSDate dateWithTimeIntervalSince1970:beTime];
NSDateFormatter *df2 = [[NSDateFormatter alloc]init];
[df2 setDateFormat:@"yyyy-MM-dd HH:mm"];
distanceStr = [df2 stringFromDate:beDate];
return distanceStr;
// NSDateFormatter * df = [[NSDateFormatter alloc]init];
// [df setDateFormat:@"HH:mm"];
// NSString * timeStr = [df stringFromDate:beDate];
//
// [df setDateFormat:@"dd"];
// NSString * nowDay = [df stringFromDate:[NSDate date]];
// NSString * lastDay = [df stringFromDate:beDate];
//
// if (distanceTime < 60) {//小于一分钟
// distanceStr = @"刚刚";
// }
// else if (distanceTime <60*60) {//时间小于一个小时
// distanceStr = [NSString stringWithFormat:@"%ld分钟前",(long)distanceTime/60];
// }
// else if(distanceTime <24*60*60 && [nowDay integerValue] == [lastDay integerValue]){//时间小于一天
// distanceStr = [NSString stringWithFormat:@"今天 %@",timeStr];
// }
// else if(distanceTime<24*60*60*2 && [nowDay integerValue] != [lastDay integerValue]){
//
// if ([nowDay integerValue] - [lastDay integerValue] ==1 || ([lastDay integerValue] - [nowDay integerValue] > 10 && [nowDay integerValue] == 1)) {
// distanceStr = [NSString stringWithFormat:@"昨天 %@",timeStr];
// }
// else{
// [df setDateFormat:@"MM-dd HH:mm"];
// distanceStr = [df stringFromDate:beDate];
// }
//
// }
// else if(distanceTime <24*60*60*365){
// [df setDateFormat:@"MM-dd HH:mm"];
// distanceStr = [df stringFromDate:beDate];
// }
// else{
// [df setDateFormat:@"yyyy-MM-dd HH:mm"];
// distanceStr = [df stringFromDate:beDate];
// }
// return distanceStr;
}
+ (void)setBtnUpImageDownTitle:(UIButton *)btn{
CGSize btnSize = btn.bounds.size;
UIImage *image = btn.imageView.image;
NSString *title = btn.titleLabel.text;
CGSize titleSize = [title boundingRectWithSize:CGSizeMake(MAXFLOAT, btn.titleLabel.frame.size.height)
options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:btn.titleLabel.font} context:nil].size;
btn.titleEdgeInsets = UIEdgeInsetsMake(image.size.height, -image.size.width, 0, 0);
if ([CurrentSystemVersion doubleValue] >= 13.0) {
btn.imageEdgeInsets = UIEdgeInsetsMake(-titleSize.height, btnSize.width / 2 - image.size.width/2 ,
0.5*titleSize.height, 0);
}else{
btn.imageEdgeInsets = UIEdgeInsetsMake(-titleSize.height, image.size.width/2 ,
0.5*titleSize.height, 0);
}
}
/**
获取当前改账号的登录类型
@return 1 手机号登录 2 微信号登录 3 imei号登录 (体验客)
*/
+ (int)getNowAccoutType:(User*)user{
int type = 0;
if(user.loginName != nil){
if(user.account_status.intValue == 1){
// 手机账号
type = 1;
}else{
//imei 登录的
type = 3;
}
}else{
//微信的
type = 2;
}
return type;
}
+ (UIColor *)colorAtPixel:(CGPoint)point{
UIImage *image = [self fullScreenshots];
if (!CGRectContainsPoint(CGRectMake(0.0f, 0.0f, image.size.width, image.size.height), point)) {
return nil;
}
NSInteger pointX = trunc(point.x);
NSInteger pointY = trunc(point.y);
CGImageRef cgImage = image.CGImage;
NSUInteger width = image.size.width;
NSUInteger height = image.size.height;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
int bytesPerPixel = 4;
int bytesPerRow = bytesPerPixel * 1;
NSUInteger bitsPerComponent = 8;
unsigned char pixelData[4] = { 0, 0, 0, 0 };
CGContextRef context = CGBitmapContextCreate(pixelData,
1,
1,
bitsPerComponent,
bytesPerRow,
colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextSetBlendMode(context, kCGBlendModeCopy);
CGContextTranslateCTM(context, -pointX, pointY-(CGFloat)height);
CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, (CGFloat)width, (CGFloat)height), cgImage);
CGContextRelease(context);
CGFloat red = (CGFloat)pixelData[0] / 255.0f;
CGFloat green = (CGFloat)pixelData[1] / 255.0f;
CGFloat blue = (CGFloat)pixelData[2] / 255.0f;
CGFloat alpha = (CGFloat)pixelData[3] / 255.0f;
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
+ (UIImage *)fullScreenshots{
UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];
UIGraphicsBeginImageContext(screenWindow.frame.size);//全屏截图,包括window
[screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
return viewImage;
}
/**
获取 关系名字数组
*/
+(NSArray *)getRelationshipNameArr:(NSInteger)deviceType
{
if (deviceType == 3)
return @[@"家人",@"朋友",@"自定义"];
else
return @[@"爸爸",
@"妈妈",
@"爷爷",
@"奶奶",
@"外公",
@"外婆",
@"叔叔",
@"阿姨",
@"自定义"];
}
/**
获取 关系未选中的图片数组
*/
+(NSArray *)getUnclickRelationshipImageArr:(NSInteger)deviceType{
// if (deviceType == 3)
// return @[@"icon_unclick_father_head_portrait",
// @"icon_unclick_uncle_head_portrait",
// @"icon_unclick_relative_head_portrait"];
// else
// return @[@"icon_unclick_father_head_portrait",
// @"icon_unclick_mother_head_portrait",
// @"icon_unclick_yy_head_portrait",
// @"icon_unclick_nn_head_portrait",
// @"icon_unclick_waigong_head_portrait",
// @"icon_unclick_waipo_head_portrait",
// @"icon_unclick_uncle_head_portrait",
// @"icon_unclick_aunt_head_portrait",
// @"icon_unclick_relative_head_portrait"];
if (deviceType == 3)
return @[@"icon_click_father_head_portrait",
@"icon_click_uncle_head_portrait",
@"icon_click_relative_head_portrait"];
else
return @[@"icon_click_father_head_portrait",
@"icon_click_mother_head_portrait",
@"icon_click_yy_head_portrait",
@"icon_click_nn_head_portrait",
@"icon_click_waigong_head_portrait",
@"icon_click_waipo_head_portrait",
@"icon_click_uncle_head_portrait",
@"icon_click_aunt_head_portrait",
@"icon_click_relative_head_portrait"];
}
/**
获取 关系选中的图片数组
*/
+(NSArray *)getClickRelationshipImageArr:(NSInteger)deviceType{
if (deviceType == 3)
return @[@"icon_click_father_head_portrait",
@"icon_click_uncle_head_portrait",
@"icon_click_relative_head_portrait"];
else
return @[@"icon_click_father_head_portrait",
@"icon_click_mother_head_portrait",
@"icon_click_yy_head_portrait",
@"icon_click_nn_head_portrait",
@"icon_click_waigong_head_portrait",
@"icon_click_waipo_head_portrait",
@"icon_click_uncle_head_portrait",
@"icon_click_aunt_head_portrait",
@"icon_click_relative_head_portrait"];
}
/**
根据 关系id 获取 关系名字
*/
+(NSString *)getRelationshipNameWithCodeID:(int)code deviceType:(NSInteger)deviceType{
if (code != 9) {
return [self getRelationshipNameArr:deviceType][code-1];
}else{
return [self getRelationshipNameArr:deviceType].lastObject;
}
}
/**
根据 关系id 获取 关系未选中的图片
*/
+(UIImage *)getUnclickRelationshipImageWithCodeID:(int)code deviceType:(NSInteger)deviceType{
if (code != 9) {
return [UIImage imageNamed:[self getUnclickRelationshipImageArr:deviceType][code-1]];
}else{
return [UIImage imageNamed:[self getUnclickRelationshipImageArr:deviceType].lastObject];
}
}
/**
根据 关系id 获取 关系选中的图片
*/
+(UIImage *)getClickRelationshipImageWithCodeID:(int)code deviceType:(NSInteger)deviceType{
if (code != 9) {
return [UIImage imageNamed:[self getClickRelationshipImageArr:deviceType][code-1]];
}else{
return [UIImage imageNamed:[self getClickRelationshipImageArr:deviceType].lastObject];
}
}
#pragma mark 获取文本宽度
+ (CGFloat)getWidthWithText:(NSString *)text withFont:(UIFont *)font {
CGSize size = [text sizeWithAttributes:@{NSFontAttributeName:font}];
return size.width;
}
@end