iOS 通用基本方法总结

ios开发有些时日,其中遇到一些功能在很多地方都有用到,这里进行了简单的总结归纳,希望能对你有所帮助。

1.获取Bundle资源

1.1 获取bundle中的Image

+(UIImage *)fetchBundle:(NSString *)bundleName Image:(NSString *)imageName{
    
    
    NSString *path = [[NSBundle mainBundle] pathForResource:bundleName ofType:@"bundle"];
    NSBundle *bundle = [NSBundle bundleWithPath:path];
    UIImage * iamge = [UIImage imageNamed:imageName inBundle:bundle compatibleWithTraitCollection:nil];
    return iamge;
}

1.2 获取bundle中的文本

+(NSString *)fetchBundle:(NSString *)bundleName Txt:(NSString *)txtName{
    
    
    NSString *path = [[NSBundle mainBundle] pathForResource:bundleName ofType:@"bundle"];
    NSString *filePath = [path stringByAppendingPathComponent:txtName];
    NSString *content = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    return content;
}

2.数据转换

2.1 NSString to NSDictionary or NSArray

+(NSDictionary *)stringToDic:(id)str{
    
    
    if([str isKindOfClass:[NSDictionary class]] || [str isKindOfClass:[NSMutableDictionary class]]){
    
    
        return str;
    }else if([str isKindOfClass:[NSString class]] || [str isKindOfClass:[NSMutableString class]]){
    
    
        NSError *error = nil;
        NSDictionary *dic = [NSJSONSerialization
                             JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding]
                             options:0
                             error:&error];
        if(error){
    
    
            return @{
    
    };
        }else{
    
    
            return dic;
        }
    }else{
    
    
        return @{
    
    };
    }
}


+(NSArray *)stringToArray:(id)str{
    
    
    if([str isKindOfClass:[NSArray class]] || [str isKindOfClass:[NSMutableArray class]]){
    
    
        return str;
    }else if([str isKindOfClass:[NSString class]] || [str isKindOfClass:[NSMutableString class]]){
    
    
        NSError *error = nil;
        NSArray * array = [NSJSONSerialization
                             JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding]
                             options:0
                             error:&error];
        if(error){
    
    
            return @[];
        }else{
    
    
            return array;
        }
    }else{
    
    
        return @[];
    }
}

2.2 NSDictionary or NSArray to NSString

+(NSString *)dicToString:(id)dic{
    
    
    if([dic isKindOfClass:[NSString class]] || [dic isKindOfClass:[NSMutableString class]]){
    
    
        return dic;
    }else if([dic isKindOfClass:[NSDictionary class]] || [dic isKindOfClass:[NSMutableDictionary class]]){
    
    
        NSError * error;
        NSData * data        = [NSJSONSerialization dataWithJSONObject:dic options:0 error:&error];
        if(error){
    
    
            return @"";
        }else{
    
    
            NSString * string    = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            return string;
        }
    }else{
    
    
        return @"";
    }
}

+(NSString *)arrayToString:(id)array{
    
    
    if([array isKindOfClass:[NSString class]] || [array isKindOfClass:[NSMutableString class]]){
    
    
        return array;
    }else if([array isKindOfClass:[NSArray class]] || [array isKindOfClass:[NSMutableArray class]]){
    
    
        NSError * error;
        NSData * data        = [NSJSONSerialization dataWithJSONObject:array options:0 error:&error];
        if(error){
    
    
            return @"";
        }else{
    
    
            NSString * string    = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            return string;
        }
    }else{
    
    
        return @"";
    }
}

3.本地信息存取

3.1 存

//根据key存值
+(void)saveString:(NSString *)value ForKey:(NSString *)key{
    
    
    [[NSUserDefaults standardUserDefaults] setObject:value forKey:key];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

3.2 取

//根据key取值,value为默认值
+(NSString *)fetchStringForKey:(NSString *)key defaultValue:(NSString *)value{
    
    
    NSString * result = [[NSUserDefaults standardUserDefaults] objectForKey:key];
    if(!result){
    
    
        result = value;
    }
    return result;
}

4. 获取文本在控件显示后的高度宽度

4.1 获取TextView高度

///width:最大宽度
+(CGFloat)getTextViewHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont *)font
{
    
    
    if([title length] == 0){
    
    
        return 0;
    }
    UITextView *label = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, width, 0)];
    label.text = title;
    label.font = font;
    [label sizeToFit];
    CGFloat height = label.frame.size.height;
    return ceil(height);
}

4.2 获取lable高度

///width:最大宽度
+(CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont *)font
{
    
    
    if([title length] == 0){
    
    
        return 0;
    }
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 0)];
    label.text = title;
    label.font = font;
    label.numberOfLines = 0;
    [label sizeToFit];
    CGFloat height = label.frame.size.height;
    return ceil(height);
}

4.3 获取lable Attributed高度

///width:最大宽度
+(CGFloat)getAttributedHeightByWidth:(CGFloat)width title:(NSAttributedString *)title
{
    
    
    if([title.string length] == 0){
    
    
        return 0;
    }
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 0)];
    label.attributedText = title;
    label.numberOfLines = 0;
    [label sizeToFit];
    CGFloat height = label.frame.size.height;
    return ceil(height);
}

4.4 获取lable宽度

//height:最大高度
+(CGFloat)getWidthByHeight:(CGFloat)height title:(NSString *)title font:(UIFont *)font
{
    
    
    if([title length] == 0){
    
    
        return 0;
    }
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0,height)];
    label.text = title;
    label.font = font;
    label.numberOfLines = 0;
    [label sizeToFit];
    CGFloat width = label.frame.size.width;
    return ceil(width);
}

4.5 获取TextView宽度

//height:最大高度
+(CGFloat)getTextViewWidthByHeight:(CGFloat)height title:(NSString *)title font:(UIFont *)font
{
    
    
    if([title length] == 0){
    
    
        return 0;
    }
    UITextView *label = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 0,height)];
    label.text = title;
    label.font = font;
    [label sizeToFit];
    CGFloat width = label.frame.size.width;
    return ceil(width);
}

5.颜色

5.1 根据HexString获取颜色

+(UIColor*)hexColor:(NSString*)hexStr{
    
    
    hexStr = [hexStr stringByReplacingOccurrencesOfString:@"#" withString:@""];
    if([hexStr length]<6){
    
    
        return [UIColor clearColor];//数据异常,返回透明
    }
    NSRange range;
    range.location = 0;
    range.length = 2;
    NSString * rString = [hexStr substringWithRange:range];

    range.location = 2;
    NSString * gString = [hexStr substringWithRange:range];

    range.location = 4;
    NSString * bString = [hexStr substringWithRange:range];
    
    NSString * aString = @"FF";
    if(hexStr.length>6){
    
    
        range.location = 6;
        aString = [hexStr substringWithRange:range];
    }
    
    unsigned int r, g, b,a;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];
    [[NSScanner scannerWithString:aString] scanHexInt:&a];

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

5.2 更改图片颜色(原图最好白色)

// 重新生成image.
UIImage * newimage = [oldImage  imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
//将新image部署到UIImageView并改颜色
imageview.image =  image;
[imageview setTintColor:[UIColor lightGrayColor]];//设置颜色

5.3 根据颜色生成图片

5.3.1 根据颜色生成一张图片

+(UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size{
    
    
    CGRect r= CGRectMake(0, 0,size.width,size.height);
    UIGraphicsBeginImageContext(r.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, r);
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

5.3.2 设置图片圆角

+ (UIImage *)image:(UIImage *)image setRadius:(CGFloat)cornerRadius{
    
    
    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, image.size.width, image.size.height) cornerRadius:cornerRadius];
    UIGraphicsBeginImageContext(image.size);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
    CGContextAddPath(ctx, path.CGPath);
    CGContextClip(ctx);
    [image drawInRect:rect];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

6.UIButton 设置图片居(上下左右)

6.1 设置按钮图片居右

/**
 *设置按钮图片居右
 *Spacing:间隔
*/
+(void)setBtn:(UIButton *)btn IconInRightWithSpacing:(CGFloat)Spacing
{
    
    
    CGFloat img_W = btn.imageView.frame.size.width;
    CGFloat tit_W = btn.titleLabel.frame.size.width;
    
    btn.titleEdgeInsets = (UIEdgeInsets){
    
    
        .top    = 0,
        .left   = - (img_W + Spacing / 2),
        .bottom = 0,
        .right  =   (img_W + Spacing / 2),
    };
    
    btn.imageEdgeInsets = (UIEdgeInsets){
    
    
        .top    = 0,
        .left   =   (tit_W + Spacing / 2),
        .bottom = 0,
        .right  = - (tit_W + Spacing / 2),
    };
}

6.2 设置按钮图片居左

/**
 设置按钮图片居左
 Spacing:间隔
*/
+ (void)setBtn:(UIButton *)btn IconInLeftWithSpacing:(CGFloat)Spacing
{
    
    
    btn.titleEdgeInsets = (UIEdgeInsets){
    
    
        .top    = 0,
        .left   = Spacing/2,
        .bottom = 0,
        .right  = -Spacing/2,
    };
    
    btn.imageEdgeInsets = (UIEdgeInsets){
    
    
        .top    = 0,
        .left   = -Spacing/2,
        .bottom = 0,
        .right  = Spacing/2,
    };
}

6.3 设置按钮图片居上

/**
 设置按钮图片居上
 Spacing:间隔
*/
+ (void)setBtn:(UIButton *)btn IconInTopWithSpacing:(CGFloat)Spacing
{
    
    
    CGFloat img_W = btn.imageView.frame.size.width;
    CGFloat img_H = btn.imageView.frame.size.height;
    CGFloat tit_W = btn.titleLabel.frame.size.width;
    CGFloat tit_H = btn.titleLabel.frame.size.height;
    
    btn.titleEdgeInsets = (UIEdgeInsets){
    
    
        .top    =   (tit_H / 2 + Spacing / 2),
        .left   = - (img_W / 2),
        .bottom = - (tit_H / 2 + Spacing / 2),
        .right  =   (img_W / 2),
    };
    
    btn.imageEdgeInsets = (UIEdgeInsets){
    
    
        .top    = - (img_H / 2 + Spacing / 2),
        .left   =   (tit_W / 2),
        .bottom =   (img_H / 2 + Spacing / 2),
        .right  = - (tit_W / 2),
    };
}

6.4 设置按钮图片居下

/**
 设置按钮图片居下
 Spacing:间隔
*/
+ (void)setBtn:(UIButton *)btn IconInBottomWithSpacing:(CGFloat)Spacing
{
    
    
    CGFloat img_W = btn.imageView.frame.size.width;
    CGFloat img_H = btn.imageView.frame.size.height;
    CGFloat tit_W = btn.titleLabel.frame.size.width;
    CGFloat tit_H = btn.titleLabel.frame.size.height;
    
    btn.titleEdgeInsets = (UIEdgeInsets){
    
    
        .top    = - (tit_H / 2 + Spacing / 2),
        .left   = - (img_W / 2),
        .bottom =   (tit_H / 2 + Spacing / 2),
        .right  =   (img_W / 2),
    };
    
    btn.imageEdgeInsets = (UIEdgeInsets){
    
    
        .top    =   (img_H / 2 + Spacing / 2),
        .left   =   (tit_W / 2),
        .bottom = - (img_H / 2 + Spacing / 2),
        .right  = - (tit_W / 2),
    };
}

7.剪切板

/**
 将string存入剪切板
 */
+(void)saveStringToClipboard:(NSString *)string{
    
    
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    [pasteboard setString:string];
}

/**
 读取剪切板
 */
+(NSString *)redStringFromClipboard{
    
    
    NSString *content = [[UIPasteboard generalPasteboard] string];
    return content;
}

8.base64加解密

/**
 base64加密
 */
+(NSString *)base64Encode:(NSString *)string{
    
    
    NSData* originData = [string dataUsingEncoding:NSASCIIStringEncoding];
    NSString* encodeResult = [originData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
    return encodeResult;
}

/**
 base64解密
 */
+(NSString *)base64Dencode:(NSString *)string{
    
    
    NSData* decodeData = [[NSData alloc] initWithBase64EncodedString:string options:0];
    NSString* decodeStr = [[NSString alloc] initWithData:decodeData encoding:NSASCIIStringEncoding];
    return decodeStr;
}

+(NSData *)base64DencodeData:(NSData *)data{
    
    
    NSData* resultData = [[NSData alloc] initWithBase64EncodedData:data options:NSDataBase64DecodingIgnoreUnknownCharacters];
    return resultData;
}

其他

MD5加密

#import <CommonCrypto/CommonDigest.h>
+(NSString *)md5:(NSString *) str
{
    
    
    const char *cStr = [str UTF8String];
    unsigned char result[16];
    CC_MD5(cStr,strlen(cStr), result); // This is the md5 call
    return [NSString stringWithFormat:
            @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
            result[0], result[1], result[2], result[3],
            result[4], result[5], result[6], result[7],
            result[8], result[9], result[10], result[11],
            result[12], result[13], result[14], result[15]
            ];
}

联系作者

期待你的点赞和关注!如有疑问,联系作者。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39404995/article/details/114584596
今日推荐