多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > iOS 常用公共方法

iOS 常用公共方法

來源:程序員人生   發布時間:2016-07-02 13:13:29 閱讀次數:2725次

1、獲得磁盤總空間大小

//磁盤總大小 + (CGFloat)diskofAllSizeMBytes{ CGFloat size = 0.0; NSError* error; NSDictionary* dic = [[NSFileManager defaultManager]attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; if (error) { #ifdef DEBUG NSLog(@"error : %@",error.localizedDescription); #endif }else{ NSNumber* number = [dic objectForKey:NSFileSystemSize]; size = [number floatValue]/1024/1024; } return size; }

2、獲得磁盤可用空間大小

//磁盤可用空間 + (CGFloat)diskofAllSizeMBytes{ CGFloat size = 0.0; NSError* error; NSDictionary* dic = [[NSFileManager defaultManager]attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; if (error) { #ifdef DEBUG NSLog(@"error : %@",error.localizedDescription); #endif }else{ NSNumber* number = [dic objectForKey:NSFileSystemFreeSize]; size = [number floatValue]/1024/1024; } return size; }

3、獲得指定路徑下某個文件的大小

//獲得文件大小 + (long long)fileSizeAtPath:(NSString *)filePath{ NSFileManager* fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:filePath]) { return 0; } return [[fileManager attributesOfItemAtPath:filePath error:nil] fileSize]; }

4、獲得文件夾下所有文件的大小

//獲得文件夾下所有文件的大小 + (long long)folderSizeAtPath:(NSString *)folderPath{ NSFileManager* fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:folderPath]) { return 0; } NSEnumerator* filesEnumerator = [[fileManager subpathsAtPath:folderPath]objectEnumerator]; NSString* fileName; long long folerSize = 0; while ((fileName = [filesEnumerator nextObject]) != nil) { NSString* filePath = [folderPath stringByAppendingPathComponent:fileName]; folerSize += [self fileSizeAtPath:filePath]; } return folerSize; } //獲得文件大小 + (long long)fileSizeAtPath:(NSString *)filePath{ NSFileManager* fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:filePath]) { return 0; } return [[fileManager attributesOfItemAtPath:filePath error:nil] fileSize]; }

5、獲得字符串(或漢字)首字母

//獲得字符串(或漢字)首字母 + (NSString *)firstCharacterWithString:(NSString *)string{ NSMutableString* str = [NSMutableString stringWithString: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) { return nil; } for (id obj in array) { if (![obj isKindOfClass:[NSString class]]) { return nil; } } UILocalizedIndexedCollation* indexedCollation = [UILocalizedIndexedCollation currentCollation]; NSMutableArray* objects = [NSMutableArray arrayWithCapacity:indexedCollation.sectionTitles.count]; //創建27個分組數組 for (int i = 0; i < indexedCollation.sectionTitles.count; i ++) { NSMutableArray* obj = [NSMutableArray array]; [objects addObject:obj]; } NSMutableArray* keys = [NSMutableArray arrayWithCapacity:objects.count]; //依照字母順序進行分組 NSInteger lastIndex = -1; for (int i =0; i < array.count; i ++) { NSInteger index = [indexedCollation sectionForObject:array[i] collationStringSelector:@selector(uppercaseString)]; [[objects objectAtIndex:index] addObject:array[i]]; lastIndex = index; } //去掉空數組 for (int i = 0; i < objects.count; i ++) { NSMutableArray* obj = objects[i]; if (obj.count == 0) { [objects removeObject:obj]; } } //獲得索引字母 for (NSMutableArray* obj in objects) { NSString* str = obj[0]; NSString* key = [self firstCharacterWithString:str]; [keys addObject:key]; } NSMutableDictionary* dic = [NSMutableDictionary dictionary]; [dic setObject:objects forKey:keys]; return dic; } //獲得字符串(或漢字)首字母 + (NSString *)firstCharacterWithString:(NSString *)string{ NSMutableString* str = [NSMutableString stringWithString:string]; //漢字轉英文 CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformMandarinLatin, NO); CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformStripDiacritics, NO); NSString* pingyin = [str capitalizedString]; return [pingyin substringToIndex:1]; }

使用:

NSLog(@"%@",[[self class]dictionaryOrderByCharacterWithOriginalArray:@[@"guangzhou",@"shanghai",@"北京",@"henan"]]);

打印:

{ ( B, G, H, S ) = ( ( "\U5317\U4eac" ), ( guangzhou ), ( henan ), ( shanghai ) ); }

7、獲得當前時間

//獲得當前時間 //format:@"yyyy-MM-dd HH:mm:ss"、@"yyyy年MM月dd日 HH時mm分ss秒" + (NSString* )currentDateWithFormat:(NSString *)format{ NSDateFormatter* dateFormatter = [[NSDateFormatter alloc]init]; [dateFormatter setDateFormat:format]; return [dateFormatter stringFromDate:[NSDate date]]; }

8、計算上第二天期距離現在多久,如XX小時前、XX分鐘前等

/** * 計算上第二天期距離現在多久 * * @param lastTime 上第二天期(需要和格式對應) * @param format1 上第二天期格式 * @param currentTime 最近日期(需要和格式對應) * @param format2 最近日期格式 * * @return xx分鐘前、xx小時前、xx天前 */ + (NSString *)timeIntervalFromLastTime:(NSString *)lastTime lasetTimeFormat:(NSString *)format1 toCurrentTime:(NSString *)currentTime currentTimeFormat:(NSString *)format2{ //上次時間 NSDateFormatter* dateFormatter1 = [[NSDateFormatter alloc]init]; dateFormatter1.dateFormat = format1; NSDate* lastDate = [dateFormatter1 dateFromString:lastTime]; //當前時間 NSDateFormatter* dateFormatter2 = [[NSDateFormatter alloc]init]; dateFormatter2.dateFormat = format2; NSDate* currentDate = [dateFormatter2 dateFromString:currentTime]; return [self timeIntervalFromLastTime:lastDate toCurrentTime:currentDate]; } + (NSString *)timeIntervalFromLastTime:(NSDate *)lastTime toCurrentTime:(NSDate *)currentTime{ NSTimeZone* timeZone = [NSTimeZone systemTimeZone]; //上次時間 NSDate* lastDate = [lastTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:lastTime]]; //當前時間 NSDate* currentDate = [currentTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:currentTime]]; //時間間隔 NSInteger intevalTime = [currentDate timeIntervalSinceReferenceDate] - [lastDate timeIntervalSinceReferenceDate]; //秒、分、小時、天、月、日 NSInteger minutes = intevalTime/60; NSInteger hours = intevalTime/60/60; NSInteger day = intevalTime/60/60/24; NSInteger mouth = intevalTime/60/60/24/30; NSInteger years = intevalTime/60/60/24/30/365; if (minutes <= 10) { return @"剛剛"; }else if (minutes < 60){ return [NSString stringWithFormat:@"%ld分鐘前",(long)minutes]; }else if (hours < 24){ return [NSString stringWithFormat:@"%ld小時前",(long)hours]; }else if (day < 30){ return [NSString stringWithFormat:@"%ld天前",(long)day]; }else if (mouth < 12){ NSDateFormatter* df = [[NSDateFormatter alloc]init]; df.dateFormat = @"M月d日"; NSString* time = [df stringFromDate:lastDate]; return time; }else if (years >= 1){ NSDateFormatter* df = [[NSDateFormatter alloc]init]; df.dateFormat = @"yyyy年M月d日"; NSString* time = [df stringFromDate:lastDate]; return time; } return @""; }

使用:

NSLog(@"%@",[[self class]timeIntervalFromLastTime:@"2016年6月27日 15:50" lasetTimeFormat:@"yyyy年MM月dd日 HH:mm" toCurrentTime:@"2016/6/27 16:12" currentTimeFormat:@"yyyy/MM/dd HH:mm"]);

打印:

22分鐘前

9、判斷手機號碼格式是不是正確

//判斷手機號碼格式是不是正確 + (BOOL)valiMobile:(NSString *)mobile{ mobile = [mobile stringByReplacingOccurrencesOfString:@" " withString:@""]; if (mobile.length != 11) { return NO; } NSString *phoneRegex = @"^((17[0⑼])|(13[0⑼])|(15[^4,\\D])|(18[0,0⑼]))\\d{8}$"; NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex]; NSString *phoneRegex2=@"^1(47[0⑼])\\d{7}$"; NSPredicate *phoneTest2=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex2]; return [phoneTest evaluateWithObject:mobile]|[phoneTest2 evaluateWithObject:mobile]; }

10、判斷郵箱格式是不是正確

//判斷郵箱格式是不是正確 + (BOOL)isAvailableEmail:(NSString *)email{ NSString *emailRegex = @"[A-Z0⑼a-z._%+-]+@[A-Za-z0⑼.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; return [emailTest evaluateWithObject:email]; }

11、對圖片進行濾鏡處理

#pragma mark -- 對圖片進行濾鏡處理 //name支持以下: //懷舊-->CIPhotoEffectInstant //單色-->CIPhotoEffectMono //黑白-->CIPhotoEffectNoir //退色-->CIPhotoEffectFade //色調-->CIPhotoEffectTonal //沖印-->CIPhotoEffectProcess //歲月-->CIPhotoEffectTransfer //鉻黃-->CIPhotoEffectMono + (UIImage *)filterWithOriginalImage:(UIImage *)image filterName:(NSString *)name{ CIContext* context = [CIContext contextWithOptions:nil]; CIImage* inputImage = [[CIImage alloc]initWithImage:image]; //創建濾鏡 CIFilter* filter = [CIFilter filterWithName:name]; [filter setValue:inputImage forKey:kCIInputImageKey]; CIImage* result = [filter valueForKey:kCIOutputImageKey]; CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]]; UIImage* resultImage = [UIImage imageWithCGImage:cgImage]; CGImageRelease(cgImage); return resultImage; }

12、對圖片進行模糊處理

//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) #pragma mark -- 對圖片進行模糊處理 + (UIImage *)blurWithOriginalImage:(UIImage *)image blurName:(NSString *)name radius:(NSInteger)radius{ CIContext* context = [CIContext contextWithOptions:nil]; CIImage* inputImage = [[CIImage alloc]initWithImage:image]; CIFilter* filter; if (name.length != 0) { filter = [CIFilter filterWithName:name]; [filter setValue:inputImage forKey:kCIInputImageKey]; if (![name isEqualToString:@"CIMedianFilter"]) { [filter setValue:@(radius) forKey:@"inputRadius"]; } CIImage* result = [filter valueForKey:kCIOutputImageKey]; CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]]; UIImage* resultImage = [UIImage imageWithCGImage:cgImage]; CGImageRelease(cgImage); return resultImage; }else{ return nil; } }

13、調劑圖片飽和度、亮度、對照度

/** * 調劑圖片飽和度、亮度、對照度 * * @param image 目標圖片 * @param saturation 飽和度 * @param brightness 亮度: ⑴.0~1.0 * @param contrast 對照度 * * @return 改變后圖片 */ - (UIImage *)colorControlsWithOriginalImage:(UIImage *)image saturation:(CGFloat)saturation brightness:(CGFloat)brightness contrast:(CGFloat)contrast{ CIContext* context = [CIContext contextWithOptions:nil]; CIImage* inputImage = [[CIImage alloc]initWithImage:image]; CIFilter* filter = [CIFilter filterWithName:@"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]; CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]]; UIImage* resultImage = [UIImage imageWithCGImage:cgImage]; CGImageRelease(cgImage); return resultImage; }

14、創建1張實時模糊效果的View(毛玻璃效果)

//Avilable in iOS 8.0 and later + (UIVisualEffectView *)effectViewWithFrame:(CGRect)frame{ UIBlurEffect* effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; UIVisualEffectView* effectView = [[UIVisualEffectView alloc]initWithEffect:effect]; effectView.frame = frame; return effectView; }

15、全屏截圖

//全屏截圖 + (UIImage *)shotWithView:(UIView *)view{ UIGraphicsBeginImageContext(view.bounds.size); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage* image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; }

16、全屏截圖

//全屏截圖 + (UIImage *)shotWithView:(UIView *)view{ UIGraphicsBeginImageContext(view.bounds.size); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage* image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; }

17、截取view中某個區域生成1張圖片

//截取view中某個區域生成1張圖片 + (UIImage *)shotWithView:(UIView *)view scope:(CGRect)scope{ CGImageRef imageRef = CGImageCreateWithImageInRect([self shotWithView:view].CGImage, scope); UIGraphicsBeginImageContext(scope.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGRect rect = 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); return image; } //全屏截圖 + (UIImage *)shotWithView:(UIView *)view{ UIGraphicsBeginImageContext(view.bounds.size); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage* image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; }

18、緊縮圖片到指定尺寸大小

//緊縮圖片到指定尺寸大小 + (UIImage *)compressOriginalImage:(UIImage *)image toSize:(CGSize)size{ UIImage* resultImage = image; UIGraphicsBeginImageContext(size); [resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)]; UIGraphicsEndImageContext(); return resultImage; }

19、緊縮圖片到指定文件大小

//緊縮圖片到指定文件大小 + (NSData *)compressOriginalImage:(UIImage *)image toMaxDataSizeKBytes:(CGFloat)size{ NSData* data = UIImageJPEGRepresentation(image, 1.0); CGFloat dataKBytes = data.length/1000.0; CGFloat maxQuality = 0.9f; CGFloat lastData = dataKBytes; while (dataKBytes > size &&maxQuality > 0.01f) { maxQuality = maxQuality - 0.01f; data = UIImageJPEGRepresentation(image, maxQuality); CGFloat dataKBytes = data.length/1000.0; if (lastData == dataKBytes) { break; }else{ lastData = dataKBytes; } } return data; }

20、獲得裝備 IP 地址

需要先引入下頭文件

#import <ifaddrs.h> #import <arpa/inet.h>
//獲得裝備IP地址 + (NSString *)getIPAddress{ NSString* address = @"error"; struct ifaddrs* interfaces = NULL; struct ifaddrs* temp_addr = NULL; int success = 0; success = getifaddrs(&interfaces); if (success == 0) { temp_addr = interfaces; while (temp_addr != NULL) { if (temp_addr->ifa_addr->sa_family == AF_INET) { if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) { address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; } } temp_addr = temp_addr->ifa_next; } } freeifaddrs(interfaces); return address; }

21、判斷字符串中是不是含有空格

//判斷字符串中是不是含有空格 + (BOOL)isHaceSpaceInString:(NSString *)string{ NSRange _range = [string rangeOfString:@" "]; if (_range.location != NSNotFound) { return YES; } return NO; }

22、判斷字符串中是不是含有某個字符串

//判斷字符串中是不是含有某個字符串 + (BOOL)isHaveString:(NSString *)string1 inString:(NSString *)string2{ NSRange _range = [string2 rangeOfString:string1]; if (_range.location != NSNotFound) { return YES; } return NO; }

23、判斷字符串中是不是含有中文

//判斷字符串中是不是含有中文 + (BOOL)isHaveChineseInString:(NSString *)string{ for (NSInteger i = 0; i < [string length]; i ++) { int a = [string characterAtIndex:i]; if (a > 0x4e00 && a < 0x9fff) { return YES; } } return NO; }

24、判斷字符串是不是全部為數字

//判斷字符串是不是全部為數字 + (BOOL)isAllNum:(NSString *)string{ unichar c; for (int i = 0; i < [string length]; i ++) { c = [string characterAtIndex:i]; if (!isdigit(c)) { return NO; } } return YES; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日本国产中文字幕 | 午夜精品国产爱在线观看不卡 | free 英国性xxxxhd | 日韩欧美亚洲一区 | 日本不卡不码高清免费观看 | 亚洲图片激情小说 | 波多野结衣手机在线视频 | 小说区图片区亚洲 | 羞羞动漫视频在线观看 | 在线观看日本一区 | 欧美日韩不卡视频一区二区三区 | 国语精品视频在线观看不卡 | 永久看片| 2018精品国产一区二区 | 成人精品国产亚洲 | 色综合天天综合网国产成人 | 五月天国产视频 | 日韩欧美一区二区三区四区 | 精品视频一区二区三区四区五区 | 久久在精品线影院精品国产 | 欧美一区二区在线观看免费网站 | 国产成人综合欧美精品久久 | 精品欧美一区二区三区在线观看 | 亚洲一区二区三区在线 | 在线观看国产小视频 | 男女爽爽无遮挡午夜视频在线观看 | 日韩欧美一区二区在线观看 | free印度性xxxxhd| 亚洲毛片在线看 | 欧美综合成人 | aa老外一级毛片 | 一区二区三区视频在线观看 | 天堂av2014| 亚洲欧美国产另类 | 人成免费a级毛片 | 亚洲精品视频久久久 | 韩国午夜理伦三级网 | 综合欧美视频一区二区三区 | 国产中文字幕在线免费观看 | 欧美人与性动交α欧美精品图片 | 国产福利一区二区三区 |