13 - 提升開發效率的分類/工具類(你值得擁有的AYExtension, 之後會繼續補充)

第一部分: 分類html

1. NSDate + AYExtensiongit

/**
 * 判斷是不是今年
 *
 *  @param target 表明須要與當前時間進行對比的nsdate對象
 */
+ (BOOL)isThisYearWithTarget:(NSDate *)target;


/**
 *  判斷是否今天
 *
 *  @param target 表明須要與當前時間進行對比的nsdate對象
 *
 *  @return
 */
+ (BOOL)isTodayWithTarget:(NSDate *)target;


/**
 *  判斷是不是昨天
 *
 *  @param target <#target description#>
 *
 *  @return <#return value description#>
 */
+ (BOOL)isYesterdayWithTarget:(NSDate *)target;


/**
 *  判斷是不是前天
 *
 *  @param target <#target description#>
 *
 *  @return <#return value description#>
 */
+ (BOOL)isTheDayBeforeYesterdayWithTarget:(NSDate *)target;

/**
 *  獲取今天周幾
 *
 *  @return <#return value description#>
 */
- (NSInteger)getNowWeekday;

2. UIView + AYExtension正則表達式

/**
 *  快速根據xib建立View
 */
+ (instancetype)ay_viewFromXib;


// 分類不能添加成員屬性
// @property若是在分類裏面,只會自動生成get,set方法的聲明,不會生成成員屬性,和方法的實現
@property (nonatomic, assign) CGFloat ay_x;
@property (nonatomic, assign) CGFloat ay_y;
@property (nonatomic, assign) CGFloat ay_width;
@property (nonatomic, assign) CGFloat ay_height;
@property (nonatomic, assign) CGSize ay_size;

//中心點的x與y
@property (nonatomic, assign) CGFloat ay_centerX;
@property (nonatomic, assign) CGFloat ay_centerY;

3. NSObject + AYExtension緩存

/**
 *  字典或對象轉成JSON字符串數據
 */
@property (nonatomic, copy, readonly) NSString *JSONString;

4. UIImage + AYExtension工具

- (instancetype)ay_circleImage;
// 生成一個圓形圖片
+ (instancetype)ay_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;

 5. UITextField +  AYExtension字體

/** 佔位文字顏色 */
@property (nonatomic, strong) UIColor *ay_placeholderColor;

6. NSString + AYExtensionatom

/**
 *  md5加密
 */
+ (NSString*)md5HexDigest:(NSString*)input;
/**
 *  根據文件名計算出文件大小
 */
- (unsigned long long)ay_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;

 

第二部分: 工具類加密

1. AYFileManager (存儲/讀取本地數據的快捷實現)url

/** 把對象歸檔存到沙盒裏 */
+(void)saveObject:(id)object byFileName:(NSString*)fileName;

/** 經過文件名從沙盒中找到歸檔的對象 */
+(id)getObjectByFileName:(NSString*)fileName;

/** 根據文件名刪除沙盒中的 plist 文件 */
+(void)removeFileByFileName:(NSString*)fileName;

/** 存儲用戶偏好設置 到 NSUserDefults */
+(void)saveUserDefaultData:(id)data forKey:(NSString*)key;

/** 讀取用戶偏好設置 */
+(id)readUserDefaultDataForKey:(NSString*)key;

/** 刪除用戶偏好設置 */
+(void)removeUserDataForkey:(NSString*)key;

2. RegularUtils (包含項目經常使用正則表達式)spa

+ (NSString *)htmlShuangyinhao:(NSString *)values;
+ (UIColor *) colorWithHexString: (NSString *) stringToConvert;
+ (NSString *) nullDefultString: (NSString *)fromString null:(NSString *)nullStr;

#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;

3. Single (快速實現一個單例)

//
//  Single.h
//  CreateTools
//
//  Created by AY on 16/6/27.
//  Copyright © 2016年 Jasperay. All rights reserved.
//

#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 */

 

附上地址: http://git.oschina.net/aLonelyRoot3/AYExtension

相關文章
相關標籤/搜索