在工作中整理的一些分类与工具类,分享给大家。这些工具类可以减少项目中的代码量,让代码变得更简洁,可以大大的提升项目的效率,直接拖到项目中使用即可。下载地址:https://github.com/leeSmile/tools/tree/master/textTools 欢迎start

分类

NSString+LXExtension

1.根据文件名计算文件大小

2.快速生成缓存/文档/临时目录路径

3.根据文字返回文本占用的高度/宽度

4.MD5加密

/**

*  md5加密

*/

+ (NSString*)md5HexDigest:(NSString*)input;

/**

*  根据文件名计算出文件大小

*/

- (unsigned long long)lx_fileSize;

/**

*  生成缓存目录全路径

*/

- (instancetype)cacheDir;

/**

*  生成文档目录全路径

*/

- (instancetype)docDir;

/**

*  生成临时目录全路径

*/

- (instancetype)tmpDir;

/**

*  @brief 根据字数的不同,返回UILabel中的text文字需要占用多少Size

*  @param size 约束的尺寸

*  @param font 文本字体

*  @return 文本的实际尺寸

*/

- (CGSize)textSizeWithContentSize:(CGSize)size font:(UIFont *)font;

/**

*  @brief  根据文本字数/文本宽度约束/文本字体 求得text的Size

*  @param width 宽度约束

*  @param font  文本字体

*  @return 文本的实际高度

*/

- (CGFloat)textHeightWithContentWidth:(CGFloat)width font:(UIFont *)font;

/**

*  @brief  根据文本字数/文本宽度约束/文本字体 求得text的Size

*  @param height 宽度约束

*  @param font  文本字体

*  @return 文本的实际长度

*/

- (CGFloat)textWidthWithContentHeight:(CGFloat)height font:(UIFont *)font;

UIImage+LXExtension

1.快速生成圆形图片

2.给定一个不要渲染的图片名称,生成一个最原始的图片

3.模糊效果

4.固定宽高

5.剪切图片某一部分

6.将自身填充到指定的size

- (instancetype)lx_circleImage;

// 生成一个圆形图片

+ (instancetype)lx_circleImageNamed:(NSString *)name;

// 给定一个不要渲染的图片名称,生成一个最原始的图片

+ (UIImage *)imageWithOriginalImageName:(NSString *)imageName;

// 模糊效果(渲染很耗时间,建议在子线程中渲染)

- (UIImage *)blurImage;

- (UIImage *)blurImageWithMask:(UIImage *)maskImage;

- (UIImage *)blurImageWithRadius:(CGFloat)radius;

- (UIImage *)blurImageAtFrame:(CGRect)frame;

// 灰度效果

- (UIImage *)grayScale;

// 固定宽度与固定高度

- (UIImage *)scaleWithFixedWidth:(CGFloat)width;

- (UIImage *)scaleWithFixedHeight:(CGFloat)height;

// 平均的颜色

- (UIColor *)averageColor;

// 裁剪图片的一部分

- (UIImage *)croppedImageAtFrame:(CGRect)frame;

// 将自身填充到指定的size

- (UIImage *)fillClipSize:(CGSize)size;

UIView+LXExtension

1.快速设置控件frame

2.快速根据xib生成View

3.判断两个view是否重叠

/**

*  快速设置控件的位置

*/

@property (nonatomic, assign) CGSize lx_size;

@property (nonatomic, assign) CGFloat lx_width;

@property (nonatomic, assign) CGFloat lx_height;

@property (nonatomic, assign) CGFloat lx_x;

@property (nonatomic, assign) CGFloat lx_y;

@property (nonatomic, assign) CGFloat lx_centerX;

@property (nonatomic, assign) CGFloat lx_centerY;

/**

*  快速根据xib创建View

*/

+ (instancetype)lx_viewFromXib;

/**

*  判断self和view是否重叠

*/

- (BOOL)lx_intersectsWithView:(UIView *)view;

UITextField+LXExtension

1.设置textField的占位文字颜色

/** 占位文字颜色 */

@property (nonatomic, strong) UIColor *lx_placeholderColor;

UIBarButtonItem+LXExtension

1.快速自定义导航栏上的按钮

+ (instancetype)lx_itemWithImage:(NSString *)image highImage:(NSString *)highImage target:(id)target action:(SEL)action;

NSDate+LXExtension

1.两个时间之间的时间间隔

2.是否为今天,昨天,明天

3.当前是周几

@interface LXDateItem : NSObject

@property (nonatomic, assign) NSInteger day;

@property (nonatomic, assign) NSInteger hour;

@property (nonatomic, assign) NSInteger minute;

@property (nonatomic, assign) NSInteger second;

@end

@interface NSDate (LXExtension)

- (LXDateItem *)lx_timeIntervalSinceDate:(NSDate *)anotherDate;

- (BOOL)lx_isToday;

- (BOOL)lx_isYesterday;

- (BOOL)lx_isTomorrow;

- (BOOL)lx_isThisYear;

//获取今天周几

- (NSInteger)getNowWeekday;

@end

NSDictionary+PropertyCode

1.根据字典快速生成Property属性

使用场景:根据网络请求返回的字典数据,写对应的模型。当属性多时,用手写很费功夫,可用这个类快速打印出所有的模型属性,直接粘贴即可

// 生成所需要的属性代码

- (void)propertyCode;

NSObject+JSON

1.字典或对象转成JSON字符串数据

/**

*  字典或对象转成JSON字符串数据

*/

@property (nonatomic, copy, readonly) NSString *JSONString;

工具类

Single:快速创建一个单例

#ifndef Single_h

#define Single_h

#ifdef __OBJC__

#pragma mark - 单例模式 .h文件内容

#define SingleInterface(name) +(instancetype)share##name;

#pragma mark - 单例模式 .m文件内容

#if __has_feature(objc_arc)

#define SingleImplementation(name) +(instancetype)share##name {return [[self alloc]init];} \\

+ (instancetype)allocWithZone:(struct _NSZone *)zone { \\

static id instance; \\

static dispatch_once_t onceToken; \\

dispatch_once(&onceToken, ^{ \\

instance = [super allocWithZone:zone]; \\

}); \\

return instance; \\

} \\

- (id)copyWithZone:(NSZone *)zone{return self;} \\

- (id)mutableCopyWithZone:(NSZone *)zone {return self;}

#else

#define SingleImplementation(name) +(instancetype)share##name {return [[self alloc]init];} \\

+ (instancetype)allocWithZone:(struct _NSZone *)zone { \\

static id instance; \\

static dispatch_once_t onceToken; \\

dispatch_once(&onceToken, ^{ \\

instance = [super allocWithZone:zone]; \\

}); \\

return instance; \\

} \\

- (id)copyWithZone:(NSZone *)zone{return self;} \\

- (id)mutableCopyWithZone:(NSZone *)zone {return self;} \\

- (instancetype)retain {return self;} \\

- (instancetype)autorelease {return self;} \\

- (oneway void)release {} \\

- (NSUInteger)retainCount {return MAXFLOAT;} \\

#endif

#endif

#endif /* Single_h */

HelperUtil:常用的正则表达式

 

#pragma 正则匹配邮箱号

+ (BOOL)checkMailInput:(NSString *)mail;

#pragma 正则匹配手机号

+ (BOOL)checkTelNumber:(NSString *) telNumber;

#pragma 正则匹配用户密码6-18位数字和字母组合

+ (BOOL)checkPassword:(NSString *) password;

#pragma 正则匹配用户姓名,20位的中文或英文

+ (BOOL)checkUserName : (NSString *) userName;

#pragma 正则匹配用户身份证号

+ (BOOL)checkUserIdCard: (NSString *) idCard;

#pragma 正则匹员工号,12位的数字

+ (BOOL)checkEmployeeNumber : (NSString *) number;

#pragma 正则匹配URL

+ (BOOL)checkURL : (NSString *) url;

#pragma 正则匹配昵称

+ (BOOL) checkNickname:(NSString *) nickname;

#pragma 正则匹配以C开头的18位字符

+ (BOOL) checkCtooNumberTo18:(NSString *) nickNumber;

#pragma 正则匹配以C开头字符

+ (BOOL) checkCtooNumber:(NSString *) nickNumber;

#pragma 正则匹配银行卡号是否正确

+ (BOOL) checkBankNumber:(NSString *) bankNumber;

#pragma 正则匹配17位车架号

+ (BOOL) checkCheJiaNumber:(NSString *) CheJiaNumber;

#pragma 正则只能输入数字和字母

+ (BOOL) checkTeshuZifuNumber:(NSString *) CheJiaNumber;

#pragma 车牌号验证

+ (BOOL) checkCarNumber:(NSString *) CarNumber;

LXFileManagerp:将对象取归档到沙盒,读取存储删除沙盒及偏好设置的数据

 

/// 文件管理类

@interface LXFileManager : NSObject

/// 把对象归档存到沙盒里

+(void)saveObject:(id)object byFileName:(NSString*)fileName;

/// 通过文件名从沙盒中找到归档的对象

+(id)getObjectByFileName:(NSString*)fileName;

/// 根据文件名删除沙盒中的 plist 文件

+(void)removeFileByFileName:(NSString*)fileName;

/// 存储用户偏好设置 到 NSUserDefults

+(void)saveUserData:(id)data forKey:(NSString*)key;

/// 读取用户偏好设置

+(id)readUserDataForKey:(NSString*)key;

/// 删除用户偏好设置

+(void)removeUserDataForkey:(NSString*)key;

LXMacro:便利宏,便捷定义@property属性

 

/** copy */

//NSString

#define String_(name) \\

zzn_copy_property(NSString*,name)

//NSArray

#define Array_(name) \\

zzn_copy_property(NSArray*,name)

//NSDictionary

#define Dictionary_(name) \\

zzn_copy_property(NSDictionary*,name)

//NSNumber,它没用对应的不可变类,其实用copy或strong没有区别

#define Number_(name) \\

zzn_copy_property(NSNumber*,name)

//NSData

#define Data_(name) \\

zzn_copy_property(NSData*,name)

//NSSet

#define Set_(name) \\

zzn_copy_property(NSSet*,name)

//NSIndexSet

#define IndexSet_(name) \\

zzn_copy_property(NSIndexSet*,name)

//代码块,名称和传参,没有传参就不填

#define Block_(name,...) \\

zzn_set_block(void,name,__VA_ARGS__)

//有返回值的代码块

#define BlockReturn_(name,returnClass,...) \\

zzn_set_block(returnClass,name,__VA_ARGS__)

………………………………

LocalPushCenter:快速使用本地通知

+ (NSDate *)fireDateWithWeek:(NSInteger)week

hour:(NSInteger)hour

minute:(NSInteger)minute

second:(NSInteger)second;

//本地发送推送(先取消上一个 再push现在的)

+ (void)localPushForDate:(NSDate *)fireDate

forKey:(NSString *)key

alertBody:(NSString *)alertBody

alertAction:(NSString *)alertAction

soundName:(NSString *)soundName

launchImage:(NSString *)launchImage

userInfo:(NSDictionary *)userInfo

badgeCount:(NSUInteger)badgeCount

repeatInterval:(NSCalendarUnit)repeatInterval;

#pragma mark - 退出

+ (void)cancelAllLocalPhsh;

+ (void)cancleLocalPushWithKey:(NSString *)key;

让iOS开发变得更有效率-分类、工具类的更多相关文章

  1. iOS开发--换肤简单实现以及工具类的抽取

    一.根据美工提供的图片,可以有两种换肤的方案. <1>美工提供图片的类型一: <2>美工提供图片的类型二:这种分了文件夹文件名都一样的情况,拖入项目后最后用真实文件夹(蓝色文件 ...

  2. spring 第一篇(1-1):让java开发变得更简单(下)

    切面(aspects)应用 DI能够让你的软件组件间保持松耦合,而面向切面编程(AOP)能够让你捕获到在整个应用中可重用的组件功能.在软件系统中,AOP通常被定义为提升关注点分离的一个技术.系统由很多 ...

  3. spring 第一篇(1-1):让java开发变得更简单(下)转

    spring 第一篇(1-1):让java开发变得更简单(下) 这个波主虽然只发了几篇,但是写的很好 上面一篇文章写的很好,其中提及到了Spring的jdbcTemplate,templet方式我之前 ...

  4. iOS开发一个制作Live Photo的工具

    代码地址如下:http://www.demodashi.com/demo/13339.html 1.livePhoto简介 livePhoto是iOS 9.0 之后系统相机提供的拍摄动态照片的功能,但 ...

  5. iOS 开发人员不可缺少的75个工具

    原文出处: Ben Scheirman 译文出处: Njuxjy 假设你去到一位熟练的木匠的工作室,你总是能发现他/她有一堆工具来完毕不同的任务. 软件开发相同如此. 你能够从软件开发人员怎样使用工具 ...

  6. IOS开发之功能模块--自定义导航控制器类常用自定义的代码

    前言:本文篇幅不多,但是涉及到的内容却是开发中常用的. 涉及的内容: 1.统一设置导航控制器子控制器的返回按钮. 2.因为修改了系统的返回按钮,所以还需要设置手势事件. 3.隐藏底部的工具条. 这里直 ...

  7. 分享iOS开发常用(三方类库,工具,高仿APP,实用网站,技术干货)

    一 . JSONModel  (三方类库会有更新,建议大家在线下载) http://pan.baidu.com/s/1i5ybP1z 二.AFNetworkiong http://pan.baidu. ...

  8. Facebook发布Tweaks:让微调iOS应用变得更简单

    假设,你正在开发一款iOS应用. 你的iOS应用有很多动画效果,而你(或你的设计师)希望让那些动画效果的持续时间恰到好处.那华丽的抽屉特效是应该耗时半秒钟,还是四分之三秒呢? 通常情况下,开发者会对合 ...

  9. spring 第一篇(1-1):让java开发变得更简单(上)

    1.释放POJOS能量 传统开发中是如何束缚POJOS呢,如果你开发过java很长时间,那你一定有接触过EJB的开发.那时候开发一个小小的功能都要扩展框架的类或者实现其接口.所以你很容易在早期的Str ...

随机推荐

  1. Z-Stack 软件架构分析

    转自Z-Stack 软件架构分析 Z-Stack的main函数在Zmain.c中,总体上来说,它一共做了两件工作,一个是系统初始化,即有启动代码来初始化硬件系统和软件架构需要的各个模块,另一个作用就是 ...

  2. SQL2005 安装时 “性能监视器计数器要求(错误)” 解决方案

    转自SQL2005 安装时 "性能监视器计数器要求(错误)" 解决方案 出现此类问题一般都是在非法卸载sql2005出现的 在 "开始" -->  &qu ...

  3. POJ 2892 Tunnel Warfare || HDU 1540(树状数组+二分 || 线段树的单点更新+区间查询)

    点我看题目 题意 :N个村子连成一条线,相邻的村子都有直接的地道进行相连,不相连的都由地道间接相连,三个命令,D x,表示x村庄被摧毁,R  ,表示最后被摧毁的村庄已经重建了,Q x表示,与x直接或间 ...

  4. 解决wordpress上传的文件尺寸超过 php.ini 中定义的 upload_max_filesize 值。

    上传的文件尺寸超过 php.ini 中定义的 upload_max_filesize 值. 解决方法:修改/etc/php5/apache2/php.ini文件中的 post_max_size = 6 ...

  5. Best Practices for Using Alpha

    Alpha是图形界面开发中常用的特效,通常我们会使用以下代码来实现Alpha特效: view.setAlpha(0.5f); View.ALPHA.set(view, 0.5f); ObjectAni ...

  6. ruby字符串相关方法

    构造字符串字面量 方法一:最简单的使用单引号或者双引号括起来的字符串,比如"hello". 方法二:使用%q配合分界符,%q代表单引号str=%q!he/lo! 方法三:使用%Q配 ...

  7. 项目属性-->生成事件-->后期生成事件命令行

    以开源记牌器https://github.com/Epix37/Hearthstone-Deck-Tracker 为例,Hearthstone Deck Tracker项目中的后期生成事件命令行: i ...

  8. bzoj3875

    悲伤地回忆,当初写了一个作死的算法爆零了为什么不好好写暴力呢……显然设w[i]表示彻底干掉这个怪物的代价注意发现这里的转移具有后效性,但是干掉每个怪物的最优值是一定的我们用spfa来转移,详见那篇sp ...

  9. Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞(CVE-2013-4350)

    漏洞版本: Linux kernel 漏洞描述: BUGTRAQ ID: 62405 CVE(CAN) ID: CVE-2013-4350 Linux Kernel是Linux操作系统的内核. Lin ...

  10. 连续使用两次fread 错误和fread返回值

    今天在写一个代码,要把一帧的buffer读入到文件,因为有NEON和OpenCL两种不同的实现所以需要读取文件两次,代码如下: FILE *file; ; INTER_BLOCK_SIZE_GPU_R ...