IOS 常用方法封装

来源:互联网 发布:mac投影分辨率设置 编辑:程序博客网 时间:2024/05/21 09:04



#import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>

@interface PublicTools : NSObject

/**

 *  获取磁盘总空间

 *

 *  @return 磁盘大小

 */

+(CGFloat)diskOfAllSizeMBytes;



/**

 *  获取磁盘可用空间大小

 *

 *  @return 可用空间大小

 */

+(CGFloat)diskOfFreeSizeMBytes;



/**

 *  获取指定路径下某个文件的大小

 *

 *  @param filePath 文件路径

 *

 *  @return 文件大小

 */

+(longlong)fileSizeAtPath:(NSString *)filePath;



/**

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

 *

 *  @param folderPath 文件夹路径

 *

 *  @return 所有文件大小

 */

+ (longlong)folderSizeAtPath:(NSString *)folderPath;



/**

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

 *

 *  @param string 待截取的字符串

 *

 *  @return 首字母

 */

+ (NSString *)firstCharacterWithString:(NSString *)string;



/**

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

 *

 *  @param array 待排序数组

 *

 *  @return 字典

 */

+ (NSDictionary *)dictionaryOrderByCharacterWithOriginalArray:(NSArray *)array;


/**

 *  获取当前时间

 *

 *  @param format @"yyyy-MM-dd HH:mm:ss"@"yyyyMMdd HHmmss"

 *

 *  @return 当前时间

 */

+ (NSString *)currentDateWithFormat:(NSString *)format;



/**

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

 *

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


/**

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

 *

 *  @param mobile 手机号码

 *

 *  @return 结果

 */

+ (BOOL)valiMobile:(NSString *)mobile;


/**

 *  判断邮箱格式

 *

 *  @param email 邮箱

 *

 *  @return 结果

 */

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



/**

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

 *

 *  @param color @"#FFFFFF" @"0x223355"

 *

 *  @return [UIColor color]

 */

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



/**

 *  对图片进行滤镜处理

 *  怀旧 --> CIPhotoEffectInstant   单色 --> CIPhotoEffectMono

 *  黑白 --> CIPhotoEffectNoir      褪色 --> CIPhotoEffectFade

 *  色调 --> CIPhotoEffectTonal     冲印 --> CIPhotoEffectProcess

 *  岁月 --> CIPhotoEffectTransfer  铬黄 --> CIPhotoEffectChrome

 *  CILinearToSRGBToneCurve, CISRGBToneCurveToLinear, CIGaussianBlur, CIBoxBlur, CIDiscBlur, CISepiaTone, CIDepthOfField

 *  @param image 图片

 *  @param name  处理类型

 *

 *  @return 图片

 */

+ (UIImage *)filterWithOriginalImage:(UIImage *)image filterName:(NSString *)name;



/**

 *  对图片进行模糊处理

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

 *

 *  @param image  图片

 *  @param name   模糊类型

 *  @param radius 半径

 *

 *  @return 图片

 */

+ (UIImage *)blurWithOriginalImage:(UIImage *)image blurName:(NSString *)name radius:(NSInteger)radius;



/**

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

 *

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



/**

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

 *

 *  @param frame 大小

 *

 *  @return View

 */

+ (UIVisualEffectView *)effectViewWithFrame:(CGRect)frame;



/**

 *  全屏截图

 *

 *  @return 图片

 */

+ (UIImage *)shotScreen;



/**

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

 *

 *  @param image 待压缩图片

 *  @param size  指定尺寸大小

 *

 *  @return 返回图片

 */

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



/**

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

 *

 *  @param image 待压缩图片

 *  @param size  指定文件大小

 *

 *  @return 图片

 */

+ (NSData *)compressOriginalImage:(UIImage *)image toMaxDataSizeKBytes:(CGFloat)size;



/**

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

 *

 *  @param string 字符串

 *

 *  @return YES or NO

 */

+(BOOL)isHaveSpaceInString:(NSString *)string;



/**

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

 *

 *  @param string1 @"Hello world"

 *  @param string2 @"world"

 *

 *  @return YES or NO

 */

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




/**

 *  判断字符串中是否含有中文

 *

 *  @param string 待比较字符串

 *

 *  @return YES or NO

 */

+ (BOOL)isHaveChineseInString:(NSString *)string;



/**

 *  判断字符串是否全部为数字

 *

 *  @param string 待比较字符串

 *

 *  @return YES or NO 

 */

+ (BOOL)isAllNum:(NSString *)string;


/**

 *  自定义弹出框

 *

 *  @param str  提示文本

 *  @param view 在哪个视图显示(self.view

 */

+(void)alert:(NSString *)str view:(UIView*)view;




/**

 *  动态设置label的宽高

 *

 *  @param font 字号

 *  @param str  文本

 *

 *  @return 高度

 */

+(CGSize)font:(UIFont *)font  str:(NSString *)str;



/**

 *  获取当前的viewcontroller

 */

+ (UIViewController *)getCurrentVC;


/**

 *  json的字符串转换成字典

 *

 *  @param jsonString 字符串

 *

 *  @return 字典,数组。。。。

 */

+ (id)dictionaryWithJsonString:(NSString *)jsonString ;


@end



#import "PublicTools.h"


@implementation PublicTools

//磁盘总空间

+ (CGFloat)diskOfAllSizeMBytes{

    CGFloat size =0.0;

    NSError *error;

    NSDictionary *dic = [[NSFileManagerdefaultManager] attributesOfFileSystemForPath:NSHomeDirectory()error:&error];

    if (error) {

#ifdef DEBUG

        NSLog(@"error: %@", error.localizedDescription);

#endif

    }else{

        NSNumber *number = [dicobjectForKey:NSFileSystemSize];

        size = [number floatValue]/1024/1024;

    }

    return size;

}


//磁盘可用空间

+ (CGFloat)diskOfFreeSizeMBytes{

    CGFloat size =0.0;

    NSError *error;

    NSDictionary *dic = [[NSFileManagerdefaultManager] 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;

}


//获取文件大小

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

    NSFileManager *fileManager = [NSFileManager defaultManager];

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

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

}


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

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

    NSFileManager *fileManager = [NSFileManager defaultManager];

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

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

    NSString *fileName;

    longlong folerSize = 0;

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

        NSString *filePath = [folderPath stringByAppendingPathComponent:fileName];

        folerSize += [self fileSizeAtPath:filePath];

    }

    return folerSize;

}


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

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

}


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

+ (NSDictionary *)dictionaryOrderByCharacterWithOriginalArray:(NSArray *)array{

    if (array.count ==0) {

        returnnil;

    }

    for (id objin array) {

        if (![obj isKindOfClass:[NSString class]]) {

            returnnil;

        }

    }

    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 *objin objects) {

        NSString *str = obj[0];

        NSString *key = [self firstCharacterWithString:str];

        [keys addObject:key];

    }

    NSMutableDictionary *dic = [NSMutableDictionary dictionary];

    [dic setObject:objects forKey:keys];

    return dic;

}


//获取当前时间

//format: @"yyyy-MM-dd HH:mm:ss"@"yyyyMMdd HHmmss"

+ (NSString *)currentDateWithFormat:(NSString *)format{

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

    [dateFormatter setDateFormat:format];

    return [dateFormatter stringFromDate:[NSDate date]];

}



/**

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

 *

 *  @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 [PublicTools 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 @"刚刚";

    }elseif (minutes < 60){

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

    }elseif (hours < 24){

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

    }elseif (day < 30){

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

    }elseif (month < 12){

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

        df.dateFormat = @"Md";

        NSString * time = [df stringFromDate:lastDate];

        return time;

    }elseif (yers >= 1){

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

        df.dateFormat = @"yyyyMd";

        NSString * time = [df stringFromDate:lastDate];

        return time;

    }

    return@"";

}


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

+ (BOOL)valiMobile:(NSString *)mobile{

    mobile = [mobile stringByReplacingOccurrencesOfString:@" " withString:@""];

    if (mobile.length !=11)

    {

        returnNO;

    }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) {

            returnYES;

        }else{

            returnNO;

        }

    }

}


//利用正则表达式验证

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

}


//将十六进制颜色转换为 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

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

}


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

}



#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{

        returnnil;

    }

}


/**

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

 *

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

}


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

}


//全屏截图

+ (UIImage *)shotScreen{

    UIWindow *window = [UIApplication sharedApplication].keyWindow;

    UIGraphicsBeginImageContext(window.bounds.size);

    [window.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return image;

}


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

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

    UIImage *resultImage = image;

    UIGraphicsBeginImageContext(size);

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

    UIGraphicsEndImageContext();

    return resultImage;

}


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

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

}


//判断是否有空格

+ (BOOL)isHaveSpaceInString:(NSString *)string{

    NSRange _range = [string rangeOfString:@" "];

    if (_range.location != NSNotFound) {

        returnYES;

    }else {

        returnNO;

    }

}


//判断stirng2是否在 string1

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

    NSRange _range = [string2 rangeOfString:string1];

    if (_range.location != NSNotFound) {

        returnYES;

    }else {

        returnNO;

    }

}


//判断是否有中文

+ (BOOL)isHaveChineseInString:(NSString *)string{

    for(NSInteger i =0; i < [string length]; i++){

        int a = [string characterAtIndex:i];

        if (a >0x4e00 && a < 0x9fff) {

            returnYES;

        }

    }

    returnNO;

}



//判断字符串是否全部为数字

+ (BOOL)isAllNum:(NSString *)string{

    unichar c;

    for (int i=0; i<string.length; i++) {

        c=[string characterAtIndex:i];

        if (!isdigit(c)) {

            returnNO;

        }

    }

    returnYES;

}


//自定义弹出框

+(void)alert:(NSString *)str view:(UIView*)view{

    float width=[self font:[UIFont systemFontOfSize:14] str:str].width;

    UILabel *alertLabel=[[UILabel alloc]init];

    alertLabel.center=CGPointMake(view.center.x,view.center.y+20);

    alertLabel.bounds=CGRectMake(0,0,width+20,40);

    alertLabel.backgroundColor=[UIColor blackColor];

    alertLabel.textAlignment=NSTextAlignmentCenter;

    alertLabel.font=[UIFont systemFontOfSize:14];

    alertLabel.text=str;

    alertLabel.textColor=[UIColor whiteColor];

    alertLabel.layer.cornerRadius=5;

    alertLabel.layer.masksToBounds=YES;

    [view addSubview:alertLabel];

    alertLabel.alpha=1;

    [UIView beginAnimations:nil context:nil];

    //设定动画持续时间

    [UIView setAnimationDuration:3];

    //动画的内容

    alertLabel.alpha=0;

    //动画结束

    [UIView commitAnimations];

}


//动态设置label的宽高

+(CGSize)font:(UIFont *)font  str:(NSString *)str{

    CGSize size =CGSizeMake(300,60);

    // label可设置的最大高度和宽度

    //CGSize size = CGSizeMake(300.f, MAXFLOAT);

    //    获取当前文本的属性

    NSDictionary * tdic = [NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName,nil];

    //ios7方法,获取文本需要的size,限制宽度

    CGSize  actualsize =[str boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin  attributes:tdic context:nil].size;

    return actualsize;

}



//获取当前的viewcontroller

+ (UIViewController *)getCurrentVC

{

    UIViewController *result = nil;

    

    UIWindow * window = [[UIApplication sharedApplication] keyWindow];

    if (window.windowLevel != UIWindowLevelNormal)

    {

        NSArray *windows = [[UIApplication sharedApplication] windows];

        for(UIWindow * tmpWinin windows)

        {

            if (tmpWin.windowLevel == UIWindowLevelNormal)

            {

                window = tmpWin;

                break;

            }

        }

    }

    

    UIView *frontView = [[window subviews] objectAtIndex:0];

    id nextResponder = [frontView nextResponder];

    

    if ([nextResponder isKindOfClass:[UIViewController class]])

        result = nextResponder;

    else

        result = window.rootViewController;

    

    return result;

}



//json的字符串转换成字典

+ (id)dictionaryWithJsonString:(NSString *)jsonString {

    

    if (jsonString ==nil) {

        NSLog(@"解析失败");

        returnnil;

    }

    

    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];

    NSError *err;

    id dic = [NSJSONSerialization JSONObjectWithData:jsonData

                                             options:NSJSONReadingMutableContainers

                                               error:&err];

    if(err) {

        NSLog(@"json解析失败:%@",err);

        returnnil;

    }

    return dic;

}


@end


0 0
原创粉丝点击