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;

}

原创粉丝点击