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]
];
}
联系作者
期待你的点赞和关注!如有疑问,联系作者。