在工作中整理的一些分類與工具類,分享給大家。這些工具類可以減少專案中的程式碼量,讓程式碼變得更簡潔,可以大大的提升專案的效率,直接拖到專案中使用即可。下載地址:https://github.com/leeSmile/tools/tree/master/textTools 歡迎start
分類
NSString+LXExtension
1.根據檔名計算檔案大小
2.快速生成快取/文件/臨時目錄路徑
3.根據文字返回文字佔用的高度/寬度
4.MD5加密
1 2 3 4 5 6 7 8 9 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 |
/** * 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
- (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是否重疊
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/** * 快速設定控制元件的位置 */ @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的佔位文字顏色
1 2 |
/** 佔位文字顏色 */ @property (nonatomic, strong) UIColor *lx_placeholderColor; |
UIBarButtonItem+LXExtension
1.快速自定義導航欄上的按鈕
1 |
+ (instancetype)lx_itemWithImage:(NSString *)image highImage:(NSString *)highImage target:(id)target action:(SEL)action; |
NSDate+LXExtension
1.兩個時間之間的時間間隔
2.是否為今天,昨天,明天
3.當前是周幾
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@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屬性
使用場景:根據網路請求返回的字典資料,寫對應的模型。當屬性多時,用手寫很費功夫,可用這個類快速列印出所有的模型屬性,直接貼上即可
1 2 |
// 生成所需要的屬性程式碼 - (void)propertyCode; |
NSObject+JSON
1.字典或物件轉成JSON字串資料
1 2 3 4 |
/** * 字典或物件轉成JSON字串資料 */ @property (nonatomic, copy, readonly) NSString *JSONString; |
工具類
Single:快速建立一個單例
1 2 3 4 5 6 7 8 9 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 |
#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:常用的正規表示式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#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:將物件取歸檔到沙盒,讀取儲存刪除沙盒及偏好設定的資料
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/// 檔案管理類 @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屬性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/** 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:快速使用本地通知
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
+ (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; |