iOS开发中的一些常用方法

1. 判断手机号码格式是否正确,利用正则表达式验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
+ (BOOL)isMobileNumber:(NSString *)mobileNum
{
     if  (mobileNum.length != 11)
     {
         return  NO;
     }
     /**
      * 手机号码:
      * 13[0-9], 14[5,7], 15[0, 1, 2, 3, 5, 6, 7, 8, 9], 17[6, 7, 8], 18[0-9], 170[0-9]
      * 移动号段: 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
      * 联通号段: 130,131,132,155,156,185,186,145,176,1709
      * 电信号段: 133,153,180,181,189,177,1700
      */
     NSString *MOBILE = @ "^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|70)\d{8}$" ;
     /**
      * 中国移动:China Mobile
      * 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
      */
     NSString *CM = @ "(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\d{8}$)|(^1705\d{7}$)" ;
     /**
      * 中国联通:China Unicom
      * 130,131,132,155,156,185,186,145,176,1709
      */
     NSString *CU = @ "(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\d{8}$)|(^1709\d{7}$)" ;
     /**
      * 中国电信:China Telecom
      * 133,153,180,181,189,177,1700
      */
     NSString *CT = @ "(^1(33|53|77|8[019])\d{8}$)|(^1700\d{7}$)" ;
     NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" , MOBILE];
     NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" , CM];
     NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" , CU];
     NSPredicate *regextestct = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" , CT];
     if  (([regextestmobile evaluateWithObject:mobileNum] == YES)
         || ([regextestcm evaluateWithObject:mobileNum] == YES)
         || ([regextestct evaluateWithObject:mobileNum] == YES)
         || ([regextestcu evaluateWithObject:mobileNum] == YES))
     {
         return  YES;
     }
     else
     {
         return  NO;
     }
}

2. 判断邮箱格式是否正确,利用正则表达式验证

1
2
3
4
5
6
+ (BOOL)isAvailableEmail:(NSString *)email
{
     NSString *emailRegex = @ "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}" ;
     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" , emailRegex];
     return  [emailTest evaluateWithObject:email];
}

3. 判断字符串中是否含有空格

1
2
3
4
5
6
7
8
+ (BOOL)isHaveSpaceInString:(NSString *)string{
     NSRange _range = [string rangeOfString:@ " " ];
     if  (_range.location != NSNotFound) {
         return  YES;
     } else  {
         return  NO;
     }
}

4. 判断字符串中是否含有中文

1
2
3
4
5
6
7
8
9
10
+ (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;
}

5. 判断字符串是否全部为数字


 
+ (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;= "" }<= "" pre= "" ><p>判断是否是纯数字</p><pre class= "brush:js;toolbar:false" >+ (BOOL)isPureInteger:(NSString *)str {
     NSScanner *scanner = [NSScanner scannerWithString:str];
     NSInteger val;
     return  [scanner scanInteger:&val] && [scanner isAtEnd];
}

6. 过滤一些特殊字符 似乎只能去除头尾的特殊字符(不准)
+ (NSString *)filterSpecialWithString:(NSString *)string
{
     // 定义一个特殊字符的集合
     NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:
                    @ "@/:;: ;()?「」"、[]{}#%-*+=_|~<>$?^?'@#$%^&*()_+'" ];
     // 过滤字符串的特殊字符
     NSString *newString = [string stringByTrimmingCharactersInSet:set];
     return  newString;
}

7. 让iOS应用直接退出
+ (void)backOutApp {
     UIWindow *window = [[UIApplication sharedApplication].delegate window];
     [UIView animateWithDuration:1.0f animations:^{
         window.alpha = 0;
     } completion:^(BOOL finished) {
         exit(0);
     }];
}

8. NSArray 快速求总和、最大值、最小值、平均值
+ (NSString *)caculateArray:(NSArray *)array
{
     CGFloat sum = [[array valueForKeyPath:@ "@sum.floatValue" ] floatValue];
     CGFloat avg = [[array valueForKeyPath:@ "@avg.floatValue" ] floatValue];
     CGFloat max =[[array valueForKeyPath:@ "@max.floatValue" ] floatValue];
     CGFloat min =[[array valueForKeyPath:@ "@min.floatValue" ] floatValue];
     NSLog(@ "%fn%fn%fn%f" ,sum,avg,max,min);
     return  [NSString stringWithFormat:@ "%f" ,sum];
}

9. 验证身份证(本人试过,还挺准的)
+ (BOOL)checkIdentityCardNo:(NSString*)value {
     value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
     NSInteger length =0;
     if  (!value) {
         return  NO;
     } else  {
         length = value.length;
         if  (length !=15 && length !=18) {
             return  NO;
         }
     }
     // 省份代码
     NSArray *areasArray =@[@ "11" ,@ "12" , @ "13" ,@ "14" , @ "15" ,@ "21" , @ "22" ,@ "23" , @ "31" ,@ "32" , @ "33" ,@ "34" , @ "35" ,@ "36" , @ "37" ,@ "41" , @ "42" ,@ "43" , @ "44" ,@ "45" , @ "46" ,@ "50" , @ "51" ,@ "52" , @ "53" ,@ "54" , @ "61" ,@ "62" , @ "63" ,@ "64" , @ "65" ,@ "71" , @ "81" ,@ "82" , @ "91" ];
     NSString *valueStart2 = [value substringToIndex:2];
     BOOL areaFlag =NO;
     for  (NSString *areaCode  in  areasArray) {
         if  ([areaCode isEqualToString:valueStart2]) {
             areaFlag =YES;
             break ;
         }
     }
     if  (!areaFlag) {
         return  false ;
     }
     NSRegularExpression *regularExpression;
     NSUInteger numberofMatch;
     NSInteger year =0;
     switch  (length) {
         case  15:
             year = [[value substringWithRange:NSMakeRange(6,2)] integerValue] +1900;
             if  (year %4 ==0 || (year 0 ==0 && year %4 ==0)) {
                 regularExpression = [[NSRegularExpression alloc]initWithPattern:@ "^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$"
                                                                        options:NSRegularExpressionCaseInsensitive
                                                                          error:nil]; //测试出生日期的合法性
             } else  {
                 regularExpression = [[NSRegularExpression alloc]initWithPattern:@ "^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$"
                                                                        options:NSRegularExpressionCaseInsensitive
                                                                          error:nil]; //测试出生日期的合法性
             }
             numberofMatch = [regularExpression numberOfMatchesInString:value                                                 options:NSMatchingReportProgress
                            range:NSMakeRange(0, value.length)];
             if (numberofMatch >0) {
                 return  YES;
             } else  {
                 return  NO;
             }
         case  18:
             year = [value substringWithRange:NSMakeRange(6,4)].intValue;
             if  (year %4 ==0 || (year 0 ==0 && year %4 ==0)) {
                 regularExpression = [[NSRegularExpression alloc]initWithPattern:@ "^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$"
options:NSRegularExpressionCaseInsensitive                                                                     error:nil]; //测试出生日期的合法性
             } else  {
                 regularExpression = [[NSRegularExpression alloc]initWithPattern:@ "^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$"                                                                       options:NSRegularExpressionCaseInsensitive                                                                     error:nil]; //测试出生日期的合法性
             }
             numberofMatch = [regularExpression numberOfMatchesInString:value                                                 options:NSMatchingReportProgress                                                     range:NSMakeRange(0, value.length)];
             if (numberofMatch >0) {
                 int S = ([value substringWithRange:NSMakeRange(0,1)].intValue + [value substringWithRange:NSMakeRange(10,1)].intValue) *7 + ([value substringWithRange:NSMakeRange(1,1)].intValue + [value substringWithRange:NSMakeRange(11,1)].intValue) *9 + ([value substringWithRange:NSMakeRange(2,1)].intValue + [value substringWithRange:NSMakeRange(12,1)].intValue) *10 + ([value substringWithRange:NSMakeRange(3,1)].intValue + [value substringWithRange:NSMakeRange(13,1)].intValue) *5 + ([value substringWithRange:NSMakeRange(4,1)].intValue + [value substringWithRange:NSMakeRange(14,1)].intValue) *8 + ([value substringWithRange:NSMakeRange(5,1)].intValue + [value substringWithRange:NSMakeRange(15,1)].intValue) *4 + ([value substringWithRange:NSMakeRange(6,1)].intValue + [value substringWithRange:NSMakeRange(16,1)].intValue) *2 + [value substringWithRange:NSMakeRange(7,1)].intValue *1 + [value substringWithRange:NSMakeRange(8,1)].intValue *6 + [value substringWithRange:NSMakeRange(9,1)].intValue *3;
                 int Y = S ;
                 NSString *M =@ "F" ;
                 NSString *JYM =@ "10X98765432" ;
                 M = [JYM substringWithRange:NSMakeRange(Y,1)]; // 判断校验位
                 if  ([M isEqualToString:[value substringWithRange:NSMakeRange(17,1)]]) {
                     return  YES; // 检测ID的校验位
                 } else  {
                     return  NO;
                 }
             } else  {
                 return  NO;
             }
         default :
             return  false ;
     }
}
10. 设置Label里的字符有不同的颜色 //可根据自己的需求进行增删改
- (void)stringColorSet {
     NSString*string = @ "如何使得Label里的字符有不同的颜色?" ;
     NSRange range = [string rangeOfString: @ "Label" ];
     NSMutableAttributedString*attribute = [[NSMutableAttributedString alloc] initWithString: string];
     [attribute addAttributes: @{NSForegroundColorAttributeName: [UIColor redColor]}range: range];
     [attribute addAttributes: @{NSForegroundColorAttributeName: [UIColor greenColor]}range: NSMakeRange(0, range.location)];
     [attribute addAttributes: @{NSForegroundColorAttributeName: [UIColor cyanColor]}range: NSMakeRange(range.location+ range.length, 5)];
     UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0.0f, 100.0f, 320.0f, 100.0f)];
     [label setText: string];
     [label setAttributedText: attribute];
}

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)diskOfFreeSizeMBytes
{
     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.将字符串数组按照元素首字母顺序进行排序分组
+ (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;
}
 
4.将字符串数组按照元素首字母顺序进行排序分组
+ (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;
}
 
 
5.对图片进行滤镜处理 
// 怀旧 --> CIPhotoEffectInstant                         单色 --> CIPhotoEffectMono
// 黑白 --> CIPhotoEffectNoir                            褪色 --> CIPhotoEffectFade
// 色调 --> CIPhotoEffectTonal                           冲印 --> CIPhotoEffectProcess
// 岁月 --> CIPhotoEffectTransfer                        铬黄 --> CIPhotoEffectChrome
// CILinearToSRGBToneCurve, CISRGBToneCurveToLinear, CIGaussianBlur, CIBoxBlur, CIDiscBlur, CISepiaTone, CIDepthOfField
+ (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;
}
 
6.对图片进行模糊处理
// 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 = [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;
     }
}
 
7.跳转到系统的相关界面:
/*
  *  需要添加一个字段
  *  蓝色的项目工程文件 -> Info -> URL Types -> 添加一个 -> 设置URL  Sch**** 为 prefs的url
  
  NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
  [[UIApplication sharedApplication] openURL:url];
  
  跳转到其他的界面的字段(不全,详细看链接)
  About — prefs:root=General&path=About
  
  Accessibility — prefs:root=General&path=ACCESSIBILITY
  
  AirplaneModeOn— prefs:root=AIRPLANE_MODE
  
  Auto-Lock — prefs:root=General&path=AUTOLOCK
  
  Brightness — prefs:root=Brightness
  
  Bluetooth — prefs:root=General&path=Bluetooth
  
  Date& Time — prefs:root=General&path=DATE_AND_TIME
  
  FaceTime — prefs:root=FACETIME
  
  General— prefs:root=General
  
  
  */
 
8.创建一张实时模糊效果 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;
}
 
 
9.设置Label的行间距
+ ( void )setLineSpaceWithString:(UILabel *)label
{
     
     NSMutableAttributedString *attributedString =
     [[NSMutableAttributedString alloc] initWithString:label.text];
     NSMutableParagraphStyle *paragraphStyle =  [[NSMutableParagraphStyle alloc] init];
     [paragraphStyle setLineSpacing:3];
     
     //调整行间距
     [attributedString addAttribute:NSParagraphStyleAttributeName
                              value:paragraphStyle
                              range:NSMakeRange(0, [label.text length])];
     label.attributedText = attributedString;
}
 
 
10.让Plain风格的TableView的区头可以”不悬停”(可以直接百度搜到):
- ( void )scrollViewDidScroll:(UIScrollView *)scrollView 
{
      if (scrollView == self.myTab) {
          CGFloat sectionHeaderHeight = 40;
          if  (scrollView.contentOffset.y=0) {
              
              scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
          else  if  (scrollView.contentOffset.y>=sectionHeaderHeight) {
              
              scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
          }
      }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值