1. 程式人生 > >讓iOS開發變得更有效率-分類、工具類

讓iOS開發變得更有效率-分類、工具類

在工作中整理的一些分類與工具類,分享給大家。這些工具類可以減少專案中的程式碼量,讓程式碼變得更簡潔,可以大大的提升專案的效率,直接拖到專案中使用即可。下載地址:https://github.com/leeSmile/tools/tree/master/textTools 歡迎start

分類

NSString+LXExtension

1.根據檔名計算檔案大小
2.快速生成快取/文件/臨時目錄路徑
3.根據文字返回文字佔用的高度/寬度
4.MD5加密

Objective-C
1234567891011121314151617181920212223242526272829303132333435363738394041424344 /** *  md5加密 */+(NSString*)md5HexDigest:(NSString*)input;/** *  根據檔名計算出檔案大小 */-(unsignedlonglong)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

Objective-C
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是否重疊

Objective-C
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-C
12 /** 佔位文字顏色 */@property(nonatomic,strong)UIColor*lx_placeholderColor;

UIBarButtonItem+LXExtension

1.快速自定義導航欄上的按鈕

Objective-C
1 +(instancetype)lx_itemWithImage:(NSString*)image highImage:(NSString*)highImage target:(id)target action:(SEL)action;

NSDate+LXExtension

1.兩個時間之間的時間間隔
2.是否為今天,昨天,明天
3.當前是周幾

Objective-C
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屬性
使用場景:根據網路請求返回的字典資料,寫對應的模型。當屬性多時,用手寫很費功夫,可用這個類快速打印出所有的模型屬性,直接貼上即可

Objective-C
12 // 生成所需要的屬性程式碼-(void)propertyCode;

NSObject+JSON

1.字典或物件轉成JSON字串資料

Objective-C
1234 /** *  字典或物件轉成JSON字串資料 */@property(nonatomic,copy,readonly)NSString*JSONString;

工具類

Single:快速建立一個單例

Objective-C
123456789101112131415161718192021222324252627282930313233343536373839404142434445 #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