iOS开发常用方法的封装
来源:互联网 发布:unity3d汽车模型下载 编辑:程序博客网 时间:2024/05/20 18:41
/**
* 判断纯数字
*
* @param string 参数
*
* @return 结果bool
*/
- (BOOL)isPureInt:(NSString *)string {
NSString *num = @"^[0-9]*$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", num];
BOOL pure = [predicate evaluateWithObject:string];
return pure;
}
/**
* 中英文计算长度
*
* @param strtemp
*
* @return
*/
- (NSInteger)convertToInt:(NSString*)strtemp{
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSData* data = [strtemp dataUsingEncoding:enc];
NSUInteger length = [data length];
return length;
}
/**
获取当前时间
*/
- (NSString *)getCurrentDateStr{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YYYY-MM-dd hh:mm:ss"];
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
return dateString;
}
/**
* 获取当前语言环境 判断语言环境
* @return
*/
- (NSString *)getCurrentLanguage{
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSArray * allLanguages = [defaults objectForKey:@"AppleLanguages"];
NSString * currentLanguage = [allLanguages objectAtIndex:0];
return currentLanguage;
}
/**
* 判断是否为空字符串
*
* @param string 需要判断的字符串
*
* @return 结果
*/
- (BOOL)isBlankString:(NSString *)string{
if (string == nil || string == NULL) {
return YES;
}
if ([string isKindOfClass:[NSNull class]]) {
return YES;
}
if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {
return YES;
}
return NO;
}
/**
* 时间转string
*
* @param date 需要转换的date
*
* @return string
*/
- (NSString *)strFromDate:(NSDate *)date{
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
return [dateFormatter stringFromDate:date];
}
/**
* 邮箱验证
*
* @param email 邮箱
*
* @return 结果
*/
- (BOOL)validateEmail:(NSString *)email{
BOOL stricterFilter = NO;
NSString *stricterFilterString = @"^[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$";
NSString *laxString = @"^.+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*$";
NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
}
//验证是否是正确的身份证号
- (BOOL)judgeIdentityStringValid:(NSString *)identityString {
if (identityString.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 *identityStringPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
//如果通过该验证,说明身份证格式正确,但准确性还需计算
if(![identityStringPredicate evaluateWithObject:identityString]) return NO;
//** 开始进行校验 *//
//将前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 = [[identityString substringWithRange:NSMakeRange(i, 1)] integerValue];
NSInteger idCardWiIndex = [[idCardWiArray objectAtIndex:i] integerValue];
idCardWiSum+= subStrIndex * idCardWiIndex;
}
//计算出校验码所在数组的位置
NSInteger idCardMod=idCardWiSum%11;
//得到最后一位身份证号码
NSString *idCardLast= [identityString substringWithRange:NSMakeRange(17, 1)];
//如果等于2,则说明校验码是10,身份证号码最后一位应该是X
if(idCardMod==2) {
if(![idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"]) {
return NO;
}
}
else{
//用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
if(![idCardLast isEqualToString: [idCardYArray objectAtIndex:idCardMod]]) {
return NO;
}
}
return YES;
}
/**
* 密码验证
*
* @param password 6-18 英文、数字
*
* @return 结果
*/
- (BOOL)validatePassword:(NSString *)password{
NSString * pattern = @"^[A-Za-z0-9]{6,18}$";
NSPredicate *passwordTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
return [passwordTest evaluateWithObject:password];
}
/**
* 通用类创建自定义button
*/
- (UIButton *)customCreateButtonType:(NSInteger)buttonType frame:(CGRect)rect addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents tag:(NSInteger)tag{
UIButton *button = [UIButton buttonWithType:buttonType];
button.frame = rect;
button.tag = tag;
[button addTarget:target action:action forControlEvents:controlEvents];
return button;
}
/**
* 通用类创建普通textField
*/
- (UITextField *)customCreateTextFieldFrame:(CGRect)frame textAlignment:(NSTextAlignment)textAlignment placeholder:(NSString *)placehodler fontSize:(CGFloat)fontSize textColor: (UIColor *)textColor backgroundColor:(UIColor *)bgColor placeholderColor:(UIColor *)phColor keyboardAppearance:(UIKeyboardAppearance)appearance{
UITextField *textField = [[UITextField alloc] initWithFrame:frame];
textField.placeholder = placehodler;
textField.textAlignment = textAlignment;
[textField setValue:phColor
forKeyPath:@"_placeholderLabel.textColor"];
textField.font = [UIFont systemFontOfSize:fontSize];
textField.textColor = textColor;
textField.backgroundColor = bgColor;
textField.keyboardAppearance = appearance;
textField.autocorrectionType = UITextAutocorrectionTypeNo;
return textField;
}
//颜色生成图片
- (UIImage*)createImageWithColor:(UIColor*)color{
CGRect rect = CGRectMake(0.0f,0.0f,1.0f,1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
- iOS开发常用方法的封装
- iOS常用的封装方法
- iOS封装常用的方法
- iOS常用封装方法
- IOS 常用方法封装
- 常用的封装方法
- iOS开发过程中常用的方法
- iOS开发过程中常用的方法
- iOS开发中一些常用的方法
- iOS开发之常用的加密方法
- iOS 开发 一些常用的公共方法
- iOS开发 GCD一些常用的方法
- iOS开发中常用的方法
- ios开发-OC面向对象的三个特性-封装方法
- 【iOS开发】深入MVC---UITableView的数据源方法封装
- IOS常用方法封装(1)
- 常用ajax封装的方法
- 常用js方法的封装
- 将本地资料上传至服务器
- 抽象类VS接口
- Ubuntu12.04文件修改eth0的IP
- this引用
- 【深度学习入门—2015MLDS】台湾大学李宏毅MLDS(2015)学习笔记
- iOS开发常用方法的封装
- php 使用面向过程开发博客(1)
- [HDU](2141)Can you find it? ---二分查找(查找)
- hdu 6148(数位dp)
- 从哪里发现用户的需求?
- Lua5.3 虚拟机指令分析(四)分支与跳转
- 【c++】联合、枚举和类型别名
- 使用bottle进行web开发:get的参数传递,form数据传递等
- maven项目数据库不显示数据信息