iOS常用公共方法

1. 获取磁盘总空间大小


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

//磁盘总空间

+ (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. 获取磁盘可用空间大小


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

//磁盘可用空间

+ (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. 获取指定路径下某个文件的大小


1

2

3

4

5

6

//获取文件大小

+ (long long)fileSizeAtPath:(NSString *)filePath{

    NSFileManager *fileManager = [NSFileManager defaultManager];

    if (![fileManager fileExistsAtPath:filePath]) return 0;

    return [[fileManager attributesOfItemAtPath:filePath error:nil] fileSize];

}

4. 获取文件夹下所有文件的大小


01

02

03

04

05

06

07

08

09

10

11

12

13

//获取文件夹下所有文件的大小

+ (long long)folderSizeAtPath:(NSString *)folderPath{

    NSFileManager *fileManager = [NSFileManager defaultManager];

    if (![fileManager fileExistsAtPath:folderPath]) return 0;

    NSEnumerator *filesEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator];

    NSString *fileName;

    long long folerSize = 0;

    while ((fileName = [filesEnumerator nextObject]) != nil) {

        NSString *filePath = [folderPath stringByAppendingPathComponent:fileName];

        folerSize += [self fileSizeAtPath:filePath];

    }

    return folerSize;

}

5. 获取字符串(或汉字)首字母


1

2

3

4

5

6

7

8

//获取字符串(或汉字)首字母

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

}

6. 将字符串数组按照元素首字母顺序进行排序分组


01

02

03

04

05

06

07

08

09

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

46

47

48

49

50

51

//将字符串数组按照元素首字母顺序进行排序分组

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

}

使用如下:


1

2

3

NSArray *arr = @[@"guangzhou", @"shanghai", @"北京", @"henan", @"hainan"];

NSDictionary *dic = [Utilities dictionaryOrderByCharacterWithOriginalArray:arr];

NSLog(@"\n\ndic: %@", dic);

输出结果如下:

<ignore_js_op> 
输出结果

7. 获取当前时间


1

2

3

4

5

6

7

//获取当前时间

//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]];

}

8. 计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等


01

02

03

04

05

06

07

08

09

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

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

/**

 *  计算上次日期距离现在多久

 *

 *  @param lastTime    上次日期(需要和格式对应)

 *  @param format1     上次日期格式

 *  @param currentTime 最近日期(需要和格式对应)

 *  @param format2     最近日期格式

 *

 *  @return xx分钟前、xx小时前、xx天前

 */

+ (NSString *)timeIntervalFromLastTime:(NSString *)lastTime

                        lastTimeFormat:(NSString *)format1

                         ToCurrentTime:(NSString *)currentTime

                     currentTimeFormat:(NSString *)format2{

    //上次时间

    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc]init];

    dateFormatter1.dateFormat = format1;

    NSDate *lastDate = [dateFormatter1 dateFromString:lastTime];

    //当前时间

    NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc]init];

    dateFormatter2.dateFormat = format2;

    NSDate *currentDate = [dateFormatter2 dateFromString:currentTime];

    return [Utilities timeIntervalFromLastTime:lastDate ToCurrentTime:currentDate];

}

+ (NSString *)timeIntervalFromLastTime:(NSDate *)lastTime ToCurrentTime:(NSDate *)currentTime{

    NSTimeZone *timeZone = [NSTimeZone systemTimeZone];

    //上次时间

    NSDate *lastDate = [lastTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:lastTime]];

    //当前时间

    NSDate *currentDate = [currentTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:currentTime]];

    //时间间隔

    NSInteger intevalTime = [currentDate timeIntervalSinceReferenceDate] - [lastDate timeIntervalSinceReferenceDate];

    //秒、分、小时、天、月、年

    NSInteger minutes = intevalTime / 60;

    NSInteger hours = intevalTime / 60 / 60;

    NSInteger day = intevalTime / 60 / 60 / 24;

    NSInteger month = intevalTime / 60 / 60 / 24 / 30;

    NSInteger yers = intevalTime / 60 / 60 / 24 / 365;

    if (minutes <= 10) {

        return  @"刚刚";

    }else if (minutes < 60){

        return [NSString stringWithFormat: @"%ld分钟前",(long)minutes];

    }else if (hours < 24){

        return [NSString stringWithFormat: @"%ld小时前",(long)hours];

    }else if (day < 30){

        return [NSString stringWithFormat: @"%ld天前",(long)day];

    }else if (month < 12){

        NSDateFormatter * df =[[NSDateFormatter alloc]init];

        df.dateFormat = @"M月d日";

        NSString * time = [df stringFromDate:lastDate];

        return time;

    }else if (yers >= 1){

        NSDateFormatter * df =[[NSDateFormatter alloc]init];

        df.dateFormat = @"yyyy年M月d日";

        NSString * time = [df stringFromDate:lastDate];

        return time;

    }

    return @"";

}

使用如下:


1

2

3

4

NSLog(@"\n\nresult: %@", [Utilities timeIntervalFromLastTime:@"2015年12月8日 15:50"

                                           lastTimeFormat:@"yyyy年MM月dd日 HH:mm"

                                            ToCurrentTime:@"2015/12/08 16:12"

                                        currentTimeFormat:@"yyyy/MM/dd HH:mm"]);

输出结果如下:

<ignore_js_op> 
输出结果

9. 判断手机号码格式是否正确


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

//判断手机号码格式是否正确

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

        }

    }

}

10. 判断邮箱格式是否正确


1

2

3

4

5

6

//利用正则表达式验证

+ (BOOL)isAvailableEmail:(NSString *)email {

    NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";

    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];

    return [emailTest evaluateWithObject:email];

}

11. 将十六进制颜色转换为 UIColor 对象


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

//将十六进制颜色转换为 UIColor 对象

+ (UIColor *)colorWithHexString:(NSString *)color{

    NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];

    // String should be 6 or 8 characters

    if ([cString length] < 6) {

        return [UIColor clearColor];

    }

    // strip "0X" or "#" if it appears

    if ([cString hasPrefix:@"0X"])

        cString = [cString substringFromIndex:2];

    if ([cString hasPrefix:@"#"])

        cString = [cString substringFromIndex:1];

    if ([cString length] != 6)

        return [UIColor clearColor];

    // Separate into r, g, b substrings

    NSRange range;

    range.location = 0;

    range.length = 2;

    //r

    NSString *rString = [cString substringWithRange:range];

    //g

    range.location = 2;

    NSString *gString = [cString substringWithRange:range];

    //b

    range.location = 4;

    NSString *bString = [cString substringWithRange:range];

    // Scan values

    unsigned int r, g, b;

    [[NSScanner scannerWithString:rString] scanHexInt:&r];

    [[NSScanner scannerWithString:gString] scanHexInt:&g];

    [[NSScanner scannerWithString:bString] scanHexInt:&b];

    return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f];

}

12. 对图片进行滤镜处理


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

#pragma mark - 对图片进行滤镜处理

// 怀旧 --> 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;

}

13. 对图片进行模糊处理


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#pragma mark - 对图片进行模糊处理

// 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;

    }

}

14. 调整图片饱和度、亮度、对比度


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

/**

 *  调整图片饱和度, 亮度, 对比度

 *

 *  @param image      目标图片

 *  @param saturation 饱和度

 *  @param brightness 亮度: -1.0 ~ 1.0

 *  @param contrast   对比度

 *

 */

+ (UIImage *)colorControlsWithOriginalImage:(UIImage *)image

                                 saturation:(CGFloat)saturation

                                 brightness:(CGFloat)brightness

                                   contrast:(CGFloat)contrast{

    CIContext *context = [CIContext contextWithOptions:nil];

    CIImage *inputImage = [[CIImage alloc] initWithImage:image];

    CIFilter *filter = [CIFilter filterWithName:@"CIColorControls"];

    [filter setValue:inputImage forKey:kCIInputImageKey];

    [filter setValue:@(saturation) forKey:@"inputSaturation"];

    [filter setValue:@(brightness) forKey:@"inputBrightness"];// 0.0 ~ 1.0

    [filter setValue:@(contrast) forKey:@"inputContrast"];

    CIImage *result = [filter valueForKey:kCIOutputImageKey];

    CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];

    UIImage *resultImage = [UIImage imageWithCGImage:cgImage];

    CGImageRelease(cgImage);

    return resultImage;

}

15. 创建一张实时模糊效果 View (毛玻璃效果)


1

2

3

4

5

6

7

//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;

}

16. 全屏截图


1

2

3

4

5

6

7

8

9

//全屏截图

+ (UIImage *)shotScreen{

    UIWindow *window = [UIApplication sharedApplication].keyWindow;

    UIGraphicsBeginImageContext(window.bounds.size);

    [window.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return image;

}

17. 截取一张 view 生成图片


1

2

3

4

5

6

7

8

//截取view生成一张图片

+ (UIImage *)shotWithView:(UIView *)view{

    UIGraphicsBeginImageContext(view.bounds.size);

    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return image;

}

18. 截取view中某个区域生成一张图片


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

//截取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;

}

19. 压缩图片到指定尺寸大小


1

2

3

4

5

6

7

8

//压缩图片到指定尺寸大小

+ (UIImage *)compressOriginalImage:(UIImage *)image toSize:(CGSize)size{

    UIImage *resultImage = image;

    UIGraphicsBeginImageContext(size);

    [resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)];

    UIGraphicsEndImageContext();

    return resultImage;

}

20. 压缩图片到指定文件大小


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

//压缩图片到指定文件大小

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

}

21. 获取设备 IP 地址

需要先引入下头文件:


1

2

#import <ifaddrs.h>

#import <arpa/inet.h>

代码:


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

//获取设备 IP 地址

+ (NSString *)getIPAddress {

    NSString *address = @"error";

    struct ifaddrs *interfaces = NULL;

    struct ifaddrs *temp_addr = NULL;

    int success = 0;

    success = getifaddrs(&interfaces);

    if (success == 0) {

        temp_addr = interfaces;

        while(temp_addr != NULL) {

            if(temp_addr->ifa_addr->sa_family == AF_INET) {

                if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {

                    address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];

                }

            }

            temp_addr = temp_addr->ifa_next;

        }

    }

    freeifaddrs(interfaces);

    return address;

}

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


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;

    }

}

23. 判断字符串中是否含有某个字符串


1

2

3

4

5

6

7

8

+ (BOOL)isHaveString:(NSString *)string1 InString:(NSString *)string2{

    NSRange _range = [string2 rangeOfString:string1];

    if (_range.location != NSNotFound) {

        return YES;

    }else {

        return NO;

    }

}

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


1

2

3

4

5

6

7

8

9

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

}

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


01

02

03

04

05

06

07

08

09

10

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

}

26. 绘制虚线


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

/*

  ** 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;

}

时间: 2024-10-05 21:57:42

iOS常用公共方法的相关文章

iOS 常用公共方法

iOS常用公共方法 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat size = 0.0; NSError *error; NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; if (error) { #ifdef DEBUG NSLog(@&quo

iOS 常用公共方法(转载至微信号:CocoaChinabbs)

1. 获取磁盘总空间大小 2. 获取磁盘可用空间大小 3. 获取指定路径下某个文件的大小 4. 获取文件夹下所有文件的大小 5. 获取字符串(或汉字)首字母 6. 将字符串数组按照元素首字母顺序进行排序分组 使用如下: 输出结果如下: 7. 获取当前时间 8. 计算上次日期距离现在多久, 如 xx 小时前.xx 分钟前等 使用如下: 输出结果如下: 9. 判断手机号码格式是否正确 10. 判断邮箱格式是否正确 11. 将十六进制颜色转换为 UIColor 对象 12. 对图片进行滤镜处理 13.

iOS常用加密方法(aes、md5、base64)

1.代码 iOS常用加密方法(aes.md5.base64) 1.AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 敏 on 12-11-24. // Copyright (c) 2012年 BOX. All rights reserved. // #import <Foundation/Foundation.h> @class NSString; @interface NSData (Encryption)

oneThink公共方法

1. 常用公共方法 1 <?php 2 // +---------------------------------------------------------------------- 3 // | OneThink [ WE CAN DO IT JUST THINK IT ] 4 // +---------------------------------------------------------------------- 5 // | Copyright (c) 2013 http:

黑马程序员_学习IOS之字典常用的方法

字典是无序的 数组是有序的.字典分为:可变字典和不可变字典  不可变字典对象 NSDictionary * dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",@"four",@"4", nil]; //value = ke

ios 开发日记 9 - 一些 UIView 中管理 Subview 常用的方法

一些 UIView 中管理 Subview 常用的方法 (2013-01-22 10:04:40) 标签: ios subview it 分类: 關于IOS學習 一些 UIView 中管理 Subview 常用的方法 一个 UIView 里面可以包含许多的 Subview(其他的 UIView),而这些 Subview 彼此之间是有所谓的阶层关系,这有点类似绘图软体中图层的概念,下面程式码示演示了几个在管理图层(Subview)上常用的方法,其程式码如下. 首先是大家最常使用的新增和移除 Sub

iOS开发UIPickerView常用属性方法

// //  ViewController.m //  UIPickerViewAll #import "ViewController.h" @interface ViewController () @end @implementation ViewController /* UIPickView控件常用的方法和属性: (1)  - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; 返回Picke

iOS KVO使用方法

KVO(Key Value Observing)其实是一种观察者模式,利用它可以很容易实现视图组件和数据模型的分离,当数据模型的属性值改变之后作为监听器 的视图组件就会被激发,激发时就会回调监听器自身.在ObjC中要实现KVO则必须实现NSKeyValueObServing协议,不过幸运的是 NSObject已经实现了该协议,因此几乎所有的ObjC对象都可以使用KVO. 在ObjC中使用KVO操作常用的方法如下: 注册指定Key路径的监听器: addObserver: forKeyPath: o

常用公共DNS服务器地址

DNS,全称Domain Name System,即域名解析系统,帮助用户在互联网上寻找路径,它在互联网的作用是把域名转换成为网络可以识别的IP地址.目前国内电信运营商通过使用DNS劫持和DNS污染的方法,干扰用户正常上网,使得用户无法访问众多国外常用服务,因此今天我介绍一些国内外的DNS服务器地址,供大家选择使用. 国外DNS服务器地址 Google Public DNS (8.8.8.8, 8.8.4.4) OpenDNS (208.67.222.222, 208.67.220.220) O