1. 获取磁盘总空间大小
//磁盘总空间+ (CGFloat)diskOfAllSizeMBytes{CGFloatsize =0.0;NSError*error;NSDictionary*dic = [[NSFileManagerdefaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];if(error) {#ifdef DEBUGNSLog(@"error: %@", error.localizedDescription);#endif}else{NSNumber*number = [dic objectForKey:NSFileSystemSize]; size = [number floatValue]/1024/1024; }returnsize;}
2. 获取磁盘可用空间大小
//磁盘可用空间+ (CGFloat)diskOfFreeSizeMBytes{CGFloatsize =0.0;NSError*error;NSDictionary*dic = [[NSFileManagerdefaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];if(error) {#ifdef DEBUGNSLog(@"error: %@", error.localizedDescription);#endif}else{NSNumber*number = [dic objectForKey:NSFileSystemFreeSize]; size = [number floatValue]/1024/1024; }returnsize;}
3. 获取指定路径下某个文件的大小
//获取文件大小+ (longlong)fileSizeAtPath:(NSString*)filePath{NSFileManager*fileManager = [NSFileManagerdefaultManager];if(![fileManager fileExistsAtPath:filePath])return0;return[[fileManager attributesOfItemAtPath:filePath error:nil] fileSize];}
4. 获取文件夹下所有文件的大小
//获取文件夹下所有文件的大小+ (longlong)folderSizeAtPath:(NSString*)folderPath{NSFileManager*fileManager = [NSFileManagerdefaultManager];if(![fileManager fileExistsAtPath:folderPath])return0;NSEnumerator*filesEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator];NSString*fileName;longlongfolerSize =0;while((fileName = [filesEnumerator nextObject]) !=nil) {NSString*filePath = [folderPath stringByAppendingPathComponent:fileName]; folerSize += [selffileSizeAtPath:filePath]; }returnfolerSize;}
5. 获取字符串(或汉字)首字母
//获取字符串(或汉字)首字母+ (NSString*)firstCharacterWithString:(NSString*)string{NSMutableString*str = [NSMutableStringstringWithString:string];CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);NSString*pingyin = [str capitalizedString];return[pingyin substringToIndex:1];}
6. 将字符串数组按照元素首字母顺序进行排序分组
//将字符串数组按照元素首字母顺序进行排序分组+ (NSDictionary*)dictionaryOrderByCharacterWithOriginalArray:(NSArray*)array{if(array.count==0) {returnnil; }for(idobjinarray) {if(![obj isKindOfClass:[NSStringclass]]) {returnnil; } }UILocalizedIndexedCollation*indexedCollation = [UILocalizedIndexedCollationcurrentCollation];NSMutableArray*objects = [NSMutableArrayarrayWithCapacity:indexedCollation.sectionTitles.count];//创建27个分组数组for(inti =0; i < indexedCollation.sectionTitles.count; i++) {NSMutableArray*obj = [NSMutableArrayarray]; [objects addObject:obj]; }NSMutableArray*keys = [NSMutableArrayarrayWithCapacity:objects.count];//按字母顺序进行分组NSIntegerlastIndex = -1;for(inti =0; i < array.count; i++) {NSIntegerindex = [indexedCollation sectionForObject:array[i] collationStringSelector:@selector(uppercaseString)]; [[objects objectAtIndex:index] addObject:array[i]]; lastIndex = index; }//去掉空数组for(inti =0; i < objects.count; i++) {NSMutableArray*obj = objects[i];if(obj.count==0) { [objects removeObject:obj]; } }//获取索引字母for(NSMutableArray*objinobjects) {NSString*str = obj[0];NSString*key = [selffirstCharacterWithString:str]; [keys addObject:key]; }NSMutableDictionary*dic = [NSMutableDictionarydictionary]; [dic setObject:objects forKey:keys];returndic;}//获取字符串(或汉字)首字母+ (NSString*)firstCharacterWithString:(NSString*)string{NSMutableString*str = [NSMutableStringstringWithString:string];CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);NSString*pingyin = [str capitalizedString];return[pingyin substringToIndex:1];}
使用如下:
NSArray*arr = @[@"guangzhou",@"shanghai",@"北京",@"henan",@"hainan"];NSDictionary*dic = [Utilities dictionaryOrderByCharacterWithOriginalArray:arr];NSLog(@"\n\ndic: %@", dic);
输出结果如下:
输出结果
7. 获取当前时间
//获取当前时间//format: @"yyyy-MM-dd HH:mm:ss"、@"yyyy年MM月dd日 HH时mm分ss秒"+ (NSString*)currentDateWithFormat:(NSString*)format{NSDateFormatter*dateFormatter = [[NSDateFormatteralloc] init]; [dateFormatter setDateFormat:format];return[dateFormatter stringFromDate:[NSDatedate]];}
8. 计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等
/**
* 计算上次日期距离现在多久
*
* @param lastTime 上次日期(需要和格式对应)
* @param format1 上次日期格式
* @param currentTime 最近日期(需要和格式对应)
* @param format2 最近日期格式
*
* @return xx分钟前、xx小时前、xx天前
*/+ (NSString*)timeIntervalFromLastTime:(NSString*)lastTime lastTimeFormat:(NSString*)format1 ToCurrentTime:(NSString*)currentTime currentTimeFormat:(NSString*)format2{//上次时间NSDateFormatter*dateFormatter1 = [[NSDateFormatteralloc]init]; dateFormatter1.dateFormat= format1;NSDate*lastDate = [dateFormatter1 dateFromString:lastTime];//当前时间NSDateFormatter*dateFormatter2 = [[NSDateFormatteralloc]init]; dateFormatter2.dateFormat= format2;NSDate*currentDate = [dateFormatter2 dateFromString:currentTime];return[Utilities timeIntervalFromLastTime:lastDate ToCurrentTime:currentDate];}+ (NSString*)timeIntervalFromLastTime:(NSDate*)lastTime ToCurrentTime:(NSDate*)currentTime{NSTimeZone*timeZone = [NSTimeZonesystemTimeZone];//上次时间NSDate*lastDate = [lastTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:lastTime]];//当前时间NSDate*currentDate = [currentTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:currentTime]];//时间间隔NSIntegerintevalTime = [currentDate timeIntervalSinceReferenceDate] - [lastDate timeIntervalSinceReferenceDate];//秒、分、小时、天、月、年NSIntegerminutes = intevalTime /60;NSIntegerhours = intevalTime /60/60;NSIntegerday = intevalTime /60/60/24;NSIntegermonth = intevalTime /60/60/24/30;NSIntegeryers = intevalTime /60/60/24/365;if(minutes <=10) {return@"刚刚"; }elseif(minutes <60){return[NSStringstringWithFormat:@"%ld分钟前",(long)minutes]; }elseif(hours <24){return[NSStringstringWithFormat:@"%ld小时前",(long)hours]; }elseif(day <30){return[NSStringstringWithFormat:@"%ld天前",(long)day]; }elseif(month <12){NSDateFormatter* df =[[NSDateFormatteralloc]init]; df.dateFormat=@"M月d日";NSString* time = [df stringFromDate:lastDate];returntime; }elseif(yers >=1){NSDateFormatter* df =[[NSDateFormatteralloc]init]; df.dateFormat=@"yyyy年M月d日";NSString* time = [df stringFromDate:lastDate];returntime; }return@"";}
使用如下:
NSLog(@"\n\nresult: %@", [Utilities timeIntervalFromLastTime:@"2015年12月8日 15:50"lastTimeFormat:@"yyyy年MM月dd日 HH:mm"ToCurrentTime:@"2015/12/08 16:12"currentTimeFormat:@"yyyy/MM/dd HH:mm"]);
输出结果如下:
输出结果
9. 判断手机号码格式是否正确
//判断手机号码格式是否正确+ (BOOL)valiMobile:(NSString*)mobile{ mobile = [mobile stringByReplacingOccurrencesOfString:@" "withString:@""];if(mobile.length!=11) {returnNO; }else{/**
* 移动号段正则表达式
*/NSString*CM_NUM =@"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";/**
* 联通号段正则表达式
*/NSString*CU_NUM =@"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";/**
* 电信号段正则表达式
*/NSString*CT_NUM =@"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";NSPredicate*pred1 = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CM_NUM];BOOLisMatch1 = [pred1 evaluateWithObject:mobile];NSPredicate*pred2 = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CU_NUM];BOOLisMatch2 = [pred2 evaluateWithObject:mobile];NSPredicate*pred3 = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CT_NUM];BOOLisMatch3 = [pred3 evaluateWithObject:mobile];if(isMatch1 || isMatch2 || isMatch3) {returnYES; }else{returnNO; } }}
10. 判断邮箱格式是否正确
//利用正则表达式验证+ (BOOL)isAvailableEmail:(NSString*)email {NSString*emailRegex =@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";NSPredicate*emailTest = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", emailRegex];return[emailTest evaluateWithObject:email];}
11. 将十六进制颜色转换为 UIColor 对象
//将十六进制颜色转换为 UIColor 对象+ (UIColor*)colorWithHexString:(NSString*)color{NSString*cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]] uppercaseString];// String should be 6 or 8 charactersif([cString length] <6) {return[UIColorclearColor]; }// strip "0X" or "#" if it appearsif([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2];if([cString hasPrefix:@"#"]) cString = [cString substringFromIndex:1];if([cString length] !=6)return[UIColorclearColor];// Separate into r, g, b substringsNSRangerange; range.location=0; range.length=2;//rNSString*rString = [cString substringWithRange:range];//grange.location=2;NSString*gString = [cString substringWithRange:range];//brange.location=4;NSString*bString = [cString substringWithRange:range];// Scan valuesunsignedintr, g, b; [[NSScannerscannerWithString:rString] scanHexInt:&r]; [[NSScannerscannerWithString:gString] scanHexInt:&g]; [[NSScannerscannerWithString:bString] scanHexInt:&b];return[UIColorcolorWithRed:((float) r /255.0f) green:((float) g /255.0f) blue:((float) b /255.0f) alpha:1.0f];}
12. 对图片进行滤镜处理
#pragma mark - 对图片进行滤镜处理// 怀旧 --> CIPhotoEffectInstant 单色 --> CIPhotoEffectMono// 黑白 --> CIPhotoEffectNoir 褪色 --> CIPhotoEffectFade// 色调 --> CIPhotoEffectTonal 冲印 --> CIPhotoEffectProcess// 岁月 --> CIPhotoEffectTransfer 铬黄 --> CIPhotoEffectChrome// CILinearToSRGBToneCurve, CISRGBToneCurveToLinear, CIGaussianBlur, CIBoxBlur, CIDiscBlur, CISepiaTone, CIDepthOfField+ (UIImage*)filterWithOriginalImage:(UIImage*)image filterName:(NSString*)name{CIContext*context = [CIContextcontextWithOptions:nil];CIImage*inputImage = [[CIImagealloc] initWithImage:image];CIFilter*filter = [CIFilterfilterWithName:name]; [filter setValue:inputImage forKey:kCIInputImageKey];CIImage*result = [filter valueForKey:kCIOutputImageKey];CGImageRefcgImage = [context createCGImage:result fromRect:[result extent]];UIImage*resultImage = [UIImageimageWithCGImage:cgImage];CGImageRelease(cgImage);returnresultImage;}
13. 对图片进行模糊处理
#pragma mark - 对图片进行模糊处理// CIGaussianBlur ---> 高斯模糊// CIBoxBlur ---> 均值模糊(Available in iOS 9.0 and later)// CIDiscBlur ---> 环形卷积模糊(Available in iOS 9.0 and later)// CIMedianFilter ---> 中值模糊, 用于消除图像噪点, 无需设置radius(Available in iOS 9.0 and later)// CIMotionBlur ---> 运动模糊, 用于模拟相机移动拍摄时的扫尾效果(Available in iOS 9.0 and later)+ (UIImage*)blurWithOriginalImage:(UIImage*)image blurName:(NSString*)name radius:(NSInteger)radius{CIContext*context = [CIContextcontextWithOptions:nil];CIImage*inputImage = [[CIImagealloc] initWithImage:image];CIFilter*filter;if(name.length!=0) { filter = [CIFilterfilterWithName:name]; [filter setValue:inputImage forKey:kCIInputImageKey];if(![name isEqualToString:@"CIMedianFilter"]) { [filter setValue:@(radius) forKey:@"inputRadius"]; }CIImage*result = [filter valueForKey:kCIOutputImageKey];CGImageRefcgImage = [context createCGImage:result fromRect:[result extent]];UIImage*resultImage = [UIImageimageWithCGImage:cgImage];CGImageRelease(cgImage);returnresultImage; }else{returnnil; }}
14. 调整图片饱和度、亮度、对比度
/**
* 调整图片饱和度, 亮度, 对比度
*
* @param image 目标图片
* @param saturation 饱和度
* @param brightness 亮度: -1.0 ~ 1.0
* @param contrast 对比度
*
*/+ (UIImage*)colorControlsWithOriginalImage:(UIImage*)image saturation:(CGFloat)saturation brightness:(CGFloat)brightness contrast:(CGFloat)contrast{CIContext*context = [CIContextcontextWithOptions:nil];CIImage*inputImage = [[CIImagealloc] initWithImage:image];CIFilter*filter = [CIFilterfilterWithName:@"CIColorControls"]; [filter setValue:inputImage forKey:kCIInputImageKey]; [filter setValue:@(saturation) forKey:@"inputSaturation"]; [filter setValue:@(brightness) forKey:@"inputBrightness"]; [filter setValue:@(contrast) forKey:@"inputContrast"];CIImage*result = [filter valueForKey:kCIOutputImageKey];CGImageRefcgImage = [context createCGImage:result fromRect:[result extent]];UIImage*resultImage = [UIImageimageWithCGImage:cgImage];CGImageRelease(cgImage);returnresultImage;}
15. 创建一张实时模糊效果 View (毛玻璃效果)
//Avilable in iOS 8.0 and later+ (UIVisualEffectView*)effectViewWithFrame:(CGRect)frame{UIBlurEffect*effect = [UIBlurEffecteffectWithStyle:UIBlurEffectStyleLight];UIVisualEffectView*effectView = [[UIVisualEffectViewalloc] initWithEffect:effect]; effectView.frame= frame;returneffectView;}
16. 全屏截图
//全屏截图+ (UIImage*)shotScreen{UIWindow*window = [UIApplicationsharedApplication].keyWindow;UIGraphicsBeginImageContext(window.bounds.size); [window.layerrenderInContext:UIGraphicsGetCurrentContext()];UIImage*image =UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();returnimage;}
17. 截取一张 view 生成图片
//截取view生成一张图片+ (UIImage*)shotWithView:(UIView*)view{UIGraphicsBeginImageContext(view.bounds.size); [view.layerrenderInContext:UIGraphicsGetCurrentContext()];UIImage*image =UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();returnimage;}
18. 截取view中某个区域生成一张图片
//截取view中某个区域生成一张图片+ (UIImage*)shotWithView:(UIView*)view scope:(CGRect)scope{CGImageRefimageRef =CGImageCreateWithImageInRect([selfshotWithView:view].CGImage, scope);UIGraphicsBeginImageContext(scope.size);CGContextRefcontext =UIGraphicsGetCurrentContext();CGRectrect =CGRectMake(0,0, scope.size.width, scope.size.height);CGContextTranslateCTM(context,0, rect.size.height);//下移CGContextScaleCTM(context,1.0f, -1.0f);//上翻CGContextDrawImage(context, rect, imageRef);UIImage*image =UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();CGImageRelease(imageRef);CGContextRelease(context);returnimage;}
19. 压缩图片到指定尺寸大小
//压缩图片到指定尺寸大小+ (UIImage*)compressOriginalImage:(UIImage*)image toSize:(CGSize)size{UIImage*resultImage = image;UIGraphicsBeginImageContext(size); [resultImage drawInRect:CGRectMake(0,0, size.width, size.height)];UIGraphicsEndImageContext();returnresultImage;}
20. 压缩图片到指定文件大小
//压缩图片到指定文件大小+ (NSData*)compressOriginalImage:(UIImage*)image toMaxDataSizeKBytes:(CGFloat)size{NSData*data =UIImageJPEGRepresentation(image,1.0);CGFloatdataKBytes = data.length/1000.0;CGFloatmaxQuality =0.9f;CGFloatlastData = dataKBytes;while(dataKBytes > size && maxQuality >0.01f) { maxQuality = maxQuality -0.01f; data =UIImageJPEGRepresentation(image, maxQuality); dataKBytes = data.length/1000.0;if(lastData == dataKBytes) {break; }else{ lastData = dataKBytes; } }returndata;}
21. 获取设备 IP 地址
需要先引入下头文件:
#import#import
代码:
//获取设备 IP 地址+ (NSString*)getIPAddress {NSString*address =@"error";structifaddrs *interfaces =NULL;structifaddrs *temp_addr =NULL;intsuccess =0; success = getifaddrs(&interfaces);if(success ==0) { temp_addr = interfaces;while(temp_addr !=NULL) {if(temp_addr->ifa_addr->sa_family == AF_INET) {if([[NSStringstringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) { address = [NSStringstringWithUTF8String:inet_ntoa(((structsockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; } } temp_addr = temp_addr->ifa_next; } } freeifaddrs(interfaces);returnaddress;}
22. 判断字符串中是否含有空格
+ (BOOL)isHaveSpaceInString:(NSString*)string{NSRange_range = [string rangeOfString:@" "];if(_range.location!=NSNotFound) {returnYES; }else{returnNO; }}
23. 判断字符串中是否含有某个字符串
+ (BOOL)isHaveString:(NSString*)string1 InString:(NSString*)string2{NSRange_range = [string2 rangeOfString:string1];if(_range.location!=NSNotFound) {returnYES; }else{returnNO; }}
24. 判断字符串中是否含有中文
+ (BOOL)isHaveChineseInString:(NSString *)string{for(NSInteger i =0; i < [stringlength]; i++){inta = [stringcharacterAtIndex:i];if(a >0x4e00&& a <0x9fff) {returnYES; } }returnNO;}
25. 判断字符串是否全部为数字
+ (BOOL)isAllNum:(NSString*)string{unicharc;for(inti=0; i
26. 绘制虚线
/*
** lineFrame: 虚线的 frame
** length: 虚线中短线的宽度
** spacing: 虚线中短线之间的间距
** color: 虚线中短线的颜色
*/+ (UIView*)createDashedLineWithFrame:(CGRect)lineFrame lineLength:(int)length lineSpacing:(int)spacing lineColor:(UIColor*)color{UIView*dashedLine = [[UIViewalloc] initWithFrame:lineFrame]; dashedLine.backgroundColor= [UIColorclearColor];CAShapeLayer*shapeLayer = [CAShapeLayerlayer]; [shapeLayer setBounds:dashedLine.bounds]; [shapeLayer setPosition:CGPointMake(CGRectGetWidth(dashedLine.frame) /2,CGRectGetHeight(dashedLine.frame))]; [shapeLayer setFillColor:[UIColorclearColor].CGColor]; [shapeLayer setStrokeColor:color.CGColor]; [shapeLayer setLineWidth:CGRectGetHeight(dashedLine.frame)]; [shapeLayer setLineJoin:kCALineJoinRound]; [shapeLayer setLineDashPattern:[NSArrayarrayWithObjects:[NSNumbernumberWithInt:length], [NSNumbernumberWithInt:spacing],nil]];CGMutablePathRefpath =CGPathCreateMutable();CGPathMoveToPoint(path,NULL,0,0);CGPathAddLineToPoint(path,NULL,CGRectGetWidth(dashedLine.frame),0); [shapeLayer setPath:path];CGPathRelease(path); [dashedLine.layeraddSublayer:shapeLayer];returndashedLine;}
文/jianshu_wl(作者)
原文链接:http://www.jianshu.com/p/997f96d2a0b5
著作权归作者所有,转载请联系作者获得授权,并标注“作者”。