13 - 提高开发效率的分类/工具类(你值得拥有的AYExtension, 以后会继续补充)

时间:2022-08-18 20:18:00

第一部分: 分类

1. NSDate + AYExtension

/**
 * 判断是否是今年
 *
 *  @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 + AYExtension

/**
 *  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 (存储/读取本地数据的快捷实现)

/** 把对象归档存到沙盒里 */
+(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 (包含项目常用正则表达式)

+ (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