讓iOS開發變得更有效率-分類、工具類
阿新 • • 發佈:2018-12-29
在工作中整理的一些分類與工具類,分享給大家。這些工具類可以減少專案中的程式碼量,讓程式碼變得更簡潔,可以大大的提升專案的效率,直接拖到專案中使用即可。下載地址:https://github.com/leeSmile/tools/tree/master/textTools 歡迎start
分類
NSString+LXExtension
1.根據檔名計算檔案大小
2.快速生成快取/文件/臨時目錄路徑
3.根據文字返回文字佔用的高度/寬度
4.MD5加密
1234567891011121314151617181920212223242526272829303132333435363738394041424344 | /** * md5加密 */+(NSString*)md5HexDigest:(NSString*)input;/** * 根據檔名計算出檔案大小 */-(unsignedlonglong)lx_fileSize;/** * 生成快取目錄全路徑 */-(instancetype)cacheDir;/** * 生成文件目錄全路徑 */-(instancetype)docDir |
UIImage+LXExtension
1.快速生成圓形圖片
2.給定一個不要渲染的圖片名稱,生成一個最原始的圖片
3.模糊效果
4.固定寬高
5.剪下圖片某一部分
6.將自身填充到指定的size
12345678910111213141516171819202122232425262728 | -(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是否重疊
1234567891011121314151617181920 | /** * 快速設定控制元件的位置 */@property(nonatomic,assign)CGSizelx_size;@property(nonatomic,assign)CGFloatlx_width;@property(nonatomic,assign)CGFloatlx_height;@property(nonatomic,assign)CGFloatlx_x;@property(nonatomic,assign)CGFloatlx_y;@property(nonatomic,assign)CGFloatlx_centerX;@property(nonatomic,assign)CGFloatlx_centerY;/** * 快速根據xib建立View */+(instancetype)lx_viewFromXib;/** * 判斷self和view是否重疊 */-(BOOL)lx_intersectsWithView:(UIView*)view; |
UITextField+LXExtension
1.設定textField的佔位文字顏色
Objective-C12 | /** 佔位文字顏色 */@property(nonatomic,strong)UIColor*lx_placeholderColor; |
UIBarButtonItem+LXExtension
1.快速自定義導航欄上的按鈕
Objective-C1 | +(instancetype)lx_itemWithImage:(NSString*)image highImage:(NSString*)highImage target:(id)target action:(SEL)action; |
NSDate+LXExtension
1.兩個時間之間的時間間隔
2.是否為今天,昨天,明天
3.當前是周幾
1234567891011121314151617 | @interface LXDateItem : NSObject@property(nonatomic,assign)NSIntegerday;@property(nonatomic,assign)NSIntegerhour;@property(nonatomic,assign)NSIntegerminute;@property(nonatomic,assign)NSIntegersecond;@end@interfaceNSDate(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屬性
使用場景:根據網路請求返回的字典資料,寫對應的模型。當屬性多時,用手寫很費功夫,可用這個類快速打印出所有的模型屬性,直接貼上即可
12 | // 生成所需要的屬性程式碼-(void)propertyCode; |
NSObject+JSON
1.字典或物件轉成JSON字串資料
Objective-C1234 | /** * 字典或物件轉成JSON字串資料 */@property(nonatomic,copy,readonly)NSString*JSONString; |
工具類
Single:快速建立一個單例
Objective-C123456789101112131415161718192021222324252627282930313233343536373839404142434445 | #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{\\staticidinstance;\\staticdispatch_once_t onceToken;\\dispatch_once(&onceToken,^{\\instance=[super allocWithZone:zone];\\});\\returninstance;\\}\\-(id)copyWithZone:(NSZone*)zone{returnself;}\\-(id)mutableCopyWithZone:(NSZone*)zone{returnself;}#else |