课程咨询 :186-8884-0703
课程咨询QQ:192750396

  • 【深圳达内IOS培训】iOS开发中常用的方法

    发布:达内      来源:达内      时间:2016-06-08

  • 深圳ios培训的小编为大家收集了11种四道iOS开发中常用的方法,希望能对你有所帮助!下面快来跟随深圳达内JAVA培训的小编来了解一下吧!
    1.//获取字符串(或汉字)首字母

    + (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];
    }

    2.//将字符串数组按照元素首字母顺序进行排序分组
    + (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];
    }
    3.//获取当前时间
    //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]];
    }
    4.//判断手机号码格式是否正确
    + (BOOL)valiMobile:(NSString *)mobile{
        mobile = [mobile stringByReplacingOccurrencesOfString:@" " withString:@""];
        if (mobile.length != 11)
        {
            return NO;
        }else{
            /**
             * 移动号段正则表达式
             */
            NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
            /**
             * 联通号段正则表达式
             */
            NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
            /**
             * 电信号段正则表达式
             */
            NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
            NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
            BOOL isMatch1 = [pred1 evaluateWithObject:mobile];
            NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
            BOOL isMatch2 = [pred2 evaluateWithObject:mobile];
            NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
            BOOL isMatch3 = [pred3 evaluateWithObject:mobile];
     
            if (isMatch1 || isMatch2 || isMatch3) {
                return YES;
            }else{
                return NO;
            }
        }
    }
    5.//利用正则表达式验证
    + (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];
    }
    6.//截取view中某个区域生成一张图片
    + (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;
    }
    7.//判断字符串中是否含有某个字符串
    + (BOOL)isHaveSpaceInString:(NSString *)string{
        NSRange _range = [string rangeOfString:@" "];
        if (_range.location != NSNotFound) {
            return YES;
        }else {
            return NO;
        }
    }
    8.//判断字符串中是否含有中文
    + (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;
    }
    9.//判断字符串是否全部为数字
    + (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;
    }
    10.//绘制虚线
    /*
      ** lineFrame:     虚线的 frame
      ** length:        虚线中短线的宽度
      ** spacing:       虚线中短线之间的间距
      ** color:         虚线中短线的颜色
    */
    + (UIView *)createDashedLineWithFrame:(CGRect)lineFrame
                               lineLength:(int)length
                              lineSpacing:(int)spacing
                                lineColor:(UIColor *)color{
        UIView *dashedLine = [[UIView alloc] initWithFrame:lineFrame];
        dashedLine.backgroundColor = [UIColor clearColor];
        CAShapeLayer *shapeLayer = [CAShapeLayer layer];
        [shapeLayer setBounds:dashedLine.bounds];
        [shapeLayer setPosition:CGPointMake(CGRectGetWidth(dashedLine.frame) / 2, CGRectGetHeight(dashedLine.frame))];
        [shapeLayer setFillColor:[UIColor clearColor].CGColor];
        [shapeLayer setStrokeColor:color.CGColor];
        [shapeLayer setLineWidth:CGRectGetHeight(dashedLine.frame)];
        [shapeLayer setLineJoin:kCALineJoinRound];
        [shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:length], [NSNumber numberWithInt:spacing], nil]];
        CGMutablePathRef path = CGPathCreateMutable();
        CGPathMoveToPoint(path, NULL, 0, 0);
        CGPathAddLineToPoint(path, NULL, CGRectGetWidth(dashedLine.frame), 0);
        [shapeLayer setPath:path];
        CGPathRelease(path);
        [dashedLine.layer addSublayer:shapeLayer];
        return dashedLine;
    }
    11.//压缩图片到指定文件大小
    + (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);
            dataKBytes = data.length/1000.0;
            if (lastData == dataKBytes) {
                break;
            }else{
                lastData = dataKBytes;
            }
        }
        return data;

    }

    如果想学习的同学可以参加深圳达内IOS培训,免费试听,或周末免费参加深圳IOS培训公 开课程试听,这里有强大的师资阵容,“师者,所以传道授业解惑也”,讲师,是教育的主体,是影响整体办学质量、学员学习质量的重要因素。所以深圳达内 IOS培训竭尽全力为学员提供最强大的师资力量,让学员接受最好的教育,学习最前沿的技术。掌握一门牛逼闪闪技术,待遇自然不在话下。

    选择培训机构等于选择未来开发行业的根基,优秀的IOS培训机构不仅仅是传授专业开发知识,更重要的是培养学员的开发思维和动手能力,可谓授人以鱼不如授人以渔!而这些,达内可以做到!

上一篇:达内专家:iOS中字符串的用法汇总

下一篇:达内推出“学历+技能”定制班 园高考的年轻人中国梦

最新开班日期  |  更多

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:6月30日

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:6月30日

3G-IOS软件工程师周末班

3G-IOS软件工程师周末班

开班日期:6月30日

3G-IOS软件工程师周末班

3G-IOS软件工程师周末班

开班日期:6月30日

  • 深圳市宝安区西乡大道宝源路 F518 时尚创意园 F2 栋 110——深圳IOS培训中心宝体校区
  • 课程培训电话:186-8884-0703
    课程咨询QQ:192750396     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56