IOS 常用方法 公用集合类
来源:互联网 发布:linux删除用户和用户组 编辑:程序博客网 时间:2024/05/21 12:47
CommonUtility.h
//// CommonUtility.h////提供简易调用的方法集合#import <Foundation/Foundation.h>#import "RegexKitLite.h"#import <QuartzCore/QuartzCore.h>/** * 描述:判断屏幕是否为retain屏幕 * 参数: * 返回值:YES为真,NO为否 * */CG_INLINE BOOL isRetinaScreen(){ CGSize screenSize = [[UIScreen mainScreen] currentMode].size;if (((screenSize.width >= 639.9f))&& (fabs(screenSize.height >= 959.9f))){ return YES;} return NO;}/** * 描述:获取设备版本 * 参数: * 返回值:版本号 * */CG_INLINE NSString *currentSystemVersion() { CGFloat versionNumber = 0.f; NSString *version = [UIDevice currentDevice].systemVersion; if(version){ versionNumber = [version floatValue]; } return [NSString stringWithFormat:@"%.1f",versionNumber];}/** * 描述:设备版本比较 * 参数:比较的版本大小 * 返回值:YES为小过比较版本,NO反之 * */CG_INLINE BOOL versionIsLowerThan(CGFloat targetVersion) { CGFloat versionNumber = 0.f; NSString *version = [UIDevice currentDevice].systemVersion; if(version){ versionNumber = [version floatValue]; } return versionNumber <= targetVersion;}/** * 描述:获取字符串长度 * 参数:字符串 * 返回值:字符串长度 * */CG_INLINE NSInteger getStringLength(NSString *string) { NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NSData *da = [string dataUsingEncoding:enc]; return [da length];}/** * 描述:根据label的文字自适应label的高度 * 参数:要自适应的label * 返回值:自适应后label的高度 * */CG_INLINE CGFloat fitLabelHeight(UILabel *label) { label.numberOfLines = 0; CGSize size = [label sizeThatFits:CGSizeMake(label.frame.size.width, 0)]; [label.text sizeWithFont:label.font constrainedToSize:size lineBreakMode:NSLineBreakByWordWrapping]; CGRect rct = label.frame; rct.size.height = size.height; label.frame = rct; return label.frame.size.height;}/** * 描述:根据label的文字自适应label的宽度 * 参数:要自适应的label * 返回值:自适应后label的宽度 * */CG_INLINE CGFloat fitLabelWidth(UILabel *label) { label.numberOfLines = 0; CGSize size = [label sizeThatFits:CGSizeMake(0, label.frame.size.height)]; [label.text sizeWithFont:label.font constrainedToSize:size lineBreakMode:NSLineBreakByWordWrapping]; CGRect rct = label.frame; rct.size.width = size.width; label.frame = rct; return label.frame.size.width;}/** * 描述:获取字符串的字符长度 * 参数:字符串 * 返回值:字符长度 * */CG_INLINE int getWordCount(NSString *word) { int i,n=[word length],l=0,a=0,b=0; unichar c; for(i=0;i<n;i++){ c=[word characterAtIndex:i]; if(isblank(c)){ b++; }else if(isascii(c)){ a++; }else{ l++; } } if(a==0 && l==0) return 0; return l+(int)ceilf((float)(a+b)/2.0);}/** * 描述:将16进制颜色转化为颜色 * 参数:16进制颜色 例如:#008833 * 返回值:转化后的颜色 * */CG_INLINE UIColor *getColor(NSString *hexColor) { if(!hexColor || [hexColor isEqualToString:@""] || [hexColor length] < 7){ if (hexColor.length != 4) { return [UIColor whiteColor]; } } if (hexColor.length == 4) { hexColor = [NSString stringWithFormat:@"#%c%c%c%c%c%c",[hexColor characterAtIndex:1],[hexColor characterAtIndex:1],[hexColor characterAtIndex:2],[hexColor characterAtIndex:2],[hexColor characterAtIndex:3],[hexColor characterAtIndex:3]]; } unsigned int red,green,blue; NSRange range; range.length = 2; range.location = 1; [[NSScanner scannerWithString:[hexColor substringWithRange:range]] scanHexInt:&red]; range.location = 3; [[NSScanner scannerWithString:[hexColor substringWithRange:range]] scanHexInt:&green]; range.location = 5; [[NSScanner scannerWithString:[hexColor substringWithRange:range]] scanHexInt:&blue]; return [UIColor colorWithRed:(float)(red/255.0f) green:(float)(green / 255.0f) blue:(float)(blue / 255.0f) alpha:1.0f];}/** * 描述:判断字符串是否为空 * 参数:字符串 * 返回值:空为真,不空为假 * */CG_INLINE BOOL stringIsEmpty(NSString *string) { if([string isKindOfClass:[NSNull class]]){ return YES; } NSString *text = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if ([text length] == 0) { return YES; } return NO;}/** * 描述:为请求路径加上http:// * 参数: * 返回值:正确的请求路径 * */CG_INLINE NSString *appendHttp(NSString *string) { if(!stringIsEmpty(string)){ NSArray *results = [string componentsSeparatedByString:@"http://"]; if([results count] < 2){ return [NSString stringWithFormat:@"http://%@",string]; } } return string;}/** * 描述:判断数组是否为空(包括nil,数组count为0) * 参数:数组 * 返回值:空为真,不空为假 * */CG_INLINE BOOL arrayIsEmpty(NSArray *array) { if([array isKindOfClass:[NSNull class]]){ return YES; } if([array count]==0 || array == nil){ return YES; } return NO;}/** * 描述:判断字典是否为空(包括nil,数组count为0) * 参数:字典 * 返回值:空为真,不空为假 * */CG_INLINE BOOL dictionaryIsEmpty(NSDictionary *dictionary) { if([dictionary isKindOfClass:[NSNull class]]){ return YES; } if([dictionary count]==0 || dictionary == nil){ return YES; } return NO;}/** * 描述:去掉字符串的空格 * 参数:字符串 * 返回值:去掉空格后的字符串 * */CG_INLINE NSString *trimString(NSString *string) { if(!stringIsEmpty(string)){ NSString *text = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; return text; } return string;}/** * 描述:验证字符串是否为邮箱 * 参数:邮箱的字符串 * 返回值:真为符合,假为不符合 * */CG_INLINE BOOL validateEmail(NSString *email) { if((0 != [email rangeOfString:@"@"].length) && (0 != [email rangeOfString:@"."].length)) { NSCharacterSet* tmpInvalidCharSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet]; NSMutableCharacterSet* tmpInvalidMutableCharSet = [tmpInvalidCharSet mutableCopy]; [tmpInvalidMutableCharSet removeCharactersInString:@"_-"]; //使用compare option 来设定比较规则,如 //NSCaseInsensitiveSearch是不区分大小写 //NSLiteralSearch 进行完全比较,区分大小写 //NSNumericSearch 只比较定符串的个数,而不比较字符串的字面值 NSRange range1 = [email rangeOfString:@"@" options:NSCaseInsensitiveSearch]; //取得用户名部分 NSString* userNameString = [email substringToIndex:range1.location]; NSArray* userNameArray = [userNameString componentsSeparatedByString:@"."]; for(NSString* string in userNameArray){ NSRange rangeOfInavlidChars = [string rangeOfCharacterFromSet: tmpInvalidMutableCharSet]; if(rangeOfInavlidChars.length != 0 || [string isEqualToString:@""]) return NO; } NSString *domainString = [email substringFromIndex:range1.location+1]; NSArray *domainArray = [domainString componentsSeparatedByString:@"."]; for(NSString *string in domainArray){ NSRange rangeOfInavlidChars=[string rangeOfCharacterFromSet:tmpInvalidMutableCharSet]; if(rangeOfInavlidChars.length !=0 || [string isEqualToString:@""]) return NO; } return YES; } else // no ''@'' or ''.'' present return NO;}/** * 描述:验证字符串长度是否过长 * 参数:字符串 maxLength:最大的长度 * 返回值:真为不过长,假为超出最大长度 * */CG_INLINE BOOL validateLength(NSString *string,NSInteger maxLength) { if([string length] > maxLength){ return NO; } return YES;}/** * 描述:验证字符串是否为手机号码 * 参数:手机号码 * 返回值:真为是,假为否 * */CG_INLINE BOOL validatePhone(NSString *phone) { NSString *regexString = @"^(1(([35][0-9])|(47)|[8][0126789]))\\d{8}$"; BOOL valid = [phone isMatchedByRegex:regexString]; return valid;}/** * 描述:验证字符串是否为纯数字 * 参数:字符串 * 返回值:真为是,假为否 * */CG_INLINE BOOL validateNumber(NSString *number) { // NSString *regexString = @"[0-9]+$"; NSString *regexString = @"^(0|[1-9]\\d*)$"; BOOL valid = [number isMatchedByRegex:regexString]; return valid;}/** * 描述:从字符串中得到NSInteger类型数值 * 参数:字符串 * 返回值:NSInteger类型数值 * */CG_INLINE NSInteger getIntFromString(NSString *string) { if([string isKindOfClass:[NSNull class]]){ return 0; } if(!string){ return 0; } if([string isKindOfClass:[NSString class]]){ if(stringIsEmpty(string)){ return 0; } } if([string isKindOfClass:[NSString class]]){ if([[string lowercaseString] isEqualToString:@"<null>"] || [[string lowercaseString] isEqualToString:@"null"]){ return 0; } } return [string intValue];}/** * 描述:从字符串中得到CGFloat类型数值 * 参数:字符串 * 返回值:CGFloat类型数值 * */CG_INLINE CGFloat getFloatFromString(NSString *string) { if([string isKindOfClass:[NSNull class]]){ return 0.0f; } if(!string){ return 0.0f; } if([string isKindOfClass:[NSString class]]){ if(stringIsEmpty(string)){ return 0.0f; } } if([string isKindOfClass:[NSString class]]){ if([[string lowercaseString] isEqualToString:@"<null>"] || [[string lowercaseString] isEqualToString:@"null"]){ return 0.0f; } } return [string floatValue];}/** * 描述:从字符串中得到Double类型数值 * 参数:字符串 * 返回值:Double类型数值 * */CG_INLINE CGFloat getDoubleFromString(NSString *string) { if([string isKindOfClass:[NSNull class]]){ return 0.0f; } if(!string){ return 0.0f; } if([string isKindOfClass:[NSString class]]){ if(stringIsEmpty(string)){ return 0.0f; } } if([string isKindOfClass:[NSString class]]){ if([[string lowercaseString] isEqualToString:@"<null>"] || [[string lowercaseString] isEqualToString:@"null"]){ return 0.0f; } } return [string doubleValue];}/** * 描述:判断链接是否为图片链接 * 参数:字符串 * 返回值:真为是图片链接 假为不是 * */CG_INLINE BOOL urlIsImageUrl(NSString *imageUrl){ if(!stringIsEmpty(imageUrl)){ NSString *format = @"png"; NSString *temp = [imageUrl lowercaseString]; if([temp hasSuffix:format]){ return YES; } format = @"jpg"; if([temp hasSuffix:format]){ return YES; } format = @"bmp"; if([temp hasSuffix:format]){ return YES; } format = @"gif"; if([temp hasSuffix:format]){ return YES; } format = @"jpeg"; if([temp hasSuffix:format]){ return YES; } format = @"tiff"; if([temp hasSuffix:format]){ return YES; } } return NO;}/** * 描述:获取文件在document的路径 * 参数:文件名 * 返回值:路径 * */CG_INLINE NSString *getDocumentFilePath(NSString *filename) { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; return [documentsDirectory stringByAppendingPathComponent:filename];}/** * 描述:将图片写入到文件里面 * 参数:image:图片 toPath;文件路径 * 返回值:真为写入成功 加为写入失败 * */CG_INLINE BOOL writeImage(UIImage *image,NSString *toPath) { if((!image) || (!toPath) || ([toPath isEqualToString:@""])){ return NO; } @try { NSData *imageData = nil; NSString *ext = [toPath pathExtension]; if ([ext isEqualToString:@"png"]) { imageData = UIImagePNGRepresentation(image); }else{ imageData = UIImageJPEGRepresentation(image, 0); } if ((imageData == nil) || ([imageData length] <= 0)) return NO; [imageData writeToFile:toPath atomically:YES]; return YES; } @catch (NSException *e) { NSLog(@"create thumbnail exception."); } return NO;}/** * 描述:将图片数据写入到文件里面 * 参数:imageData:图片数据 toPath;文件路径 * 返回值:真为写入成功 加为写入失败 * */CG_INLINE BOOL writeImageData(NSData *imageData,NSString *toPath) { if((!imageData) || (!toPath) || ([toPath isEqualToString:@""])){ return NO; } @try { if ((imageData == nil) || ([imageData length] <= 0)) return NO; [imageData writeToFile:toPath atomically:YES]; return YES; } @catch (NSException *e) { NSLog(@"create thumbnail exception."); } return NO;}/** * 描述:截图 * 参数:要截图的内容 * 返回值:截取成功后的图片 * */CG_INLINE UIImage *viewToImage(UIView *view) { UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 1); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *uiImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return uiImage;}/** * 描述:调整好图片自身的方向 * 参数:要调整的图片 * 返回值:调整后图片 * */CG_INLINE UIImage* fixOrientation(UIImage *aImage) { // No-op if the orientation is already correct if (aImage.imageOrientation == UIImageOrientationUp) return aImage; // We need to calculate the proper transformation to make the image upright. // We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored. CGAffineTransform transform = CGAffineTransformIdentity; switch (aImage.imageOrientation) { case UIImageOrientationDown: case UIImageOrientationDownMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height); transform = CGAffineTransformRotate(transform, M_PI); break; case UIImageOrientationLeft: case UIImageOrientationLeftMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, 0); transform = CGAffineTransformRotate(transform, M_PI_2); break; case UIImageOrientationRight: case UIImageOrientationRightMirrored: transform = CGAffineTransformTranslate(transform, 0, aImage.size.height); transform = CGAffineTransformRotate(transform, -M_PI_2); break; default: break; } switch (aImage.imageOrientation) { case UIImageOrientationUpMirrored: case UIImageOrientationDownMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, 0); transform = CGAffineTransformScale(transform, -1, 1); break; case UIImageOrientationLeftMirrored: case UIImageOrientationRightMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.height, 0); transform = CGAffineTransformScale(transform, -1, 1); break; default: break; } // Now we draw the underlying CGImage into a new context, applying the transform // calculated above. CGContextRef ctx = CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height, CGImageGetBitsPerComponent(aImage.CGImage), 0, CGImageGetColorSpace(aImage.CGImage), CGImageGetBitmapInfo(aImage.CGImage)); CGContextConcatCTM(ctx, transform); switch (aImage.imageOrientation) { case UIImageOrientationLeft: case UIImageOrientationLeftMirrored: case UIImageOrientationRight: case UIImageOrientationRightMirrored: // Grr... CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.height,aImage.size.width), aImage.CGImage); break; default: CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.width,aImage.size.height), aImage.CGImage); break; } // And now we just create a new UIImage from the drawing context CGImageRef cgimg = CGBitmapContextCreateImage(ctx); UIImage *img = [UIImage imageWithCGImage:cgimg]; CGContextRelease(ctx); CGImageRelease(cgimg); return img;}/** * 描述:对字段进行空值过滤 * 参数:value:字段 * 返回值:不为空的字符串 */CG_INLINE NSString *filterEmptyValue(NSString* value){ if(stringIsEmpty(value)){ return @""; } return value;}
0 0
- IOS 常用方法 公用集合类
- iOS开发---常用公用方法
- 常用的.net公用类方法
- iOS UITableView 常用方法集合
- 常用js代码公用方法
- Object类公用方法
- 底层实现查找集合的公用方法
- hibernateDaoSupport中的一些公用常用方法
- hibernateDaoSupport中的一些公用常用方法
- IOS 日期类方法集合
- iOS 第六课 自己常用方法集合写法
- ios 判断是qq,银行卡,手机号等等公用的方法。
- 关于iOS上的对象映射公用方法
- 关于iOS上的对象映射公用方法
- ios 判断是qq,银行卡,手机号等等公用的方法
- ios 判断是qq,银行卡,手机号等等公用的方法。
- ios 判断是qq,银行卡,手机号等等公用的方法。
- ios 判断是qq,银行卡,手机号等等公用的方法
- 安卓手机利用org.apache.commons.mail.HtmlEmail发送邮件
- IEEE PDF eXpress
- 谈谈-----日期操作类
- 一张图解Java语言开发中的权限控制
- 我的大学生活
- IOS 常用方法 公用集合类
- 如果给我三天光明
- vim格式化代码,非常好用
- Swift--区间运算符
- NOJ1070南邮仙林自行车停放场——计算几何+多边形
- linux下完整删除oracle
- hduCan you find it?二分
- 二叉查找树的C语言实现(一)
- vm模版调用对象方法