有了宏, 开发方便了好多, 下面是开发中经常用到的宏, 不完整的地方, 欢迎提出来, 持续更新中...
1. 尺寸篇
#pragma mark --------------------- 尺寸 ----------------------------
//屏幕的宽度
#define kScreenWidth [[UIScreen mainScreen] bounds].size.width
//屏幕的高度
#define kScreenHeight [[UIScreen mainScreen] bounds].size.height
//打包和结算的高度
#define kAllBarHeight 40
//导航栏高度
#define kNavBarHeight (kScreenHeight == 812 ? 88 : 64)
//tabBar高度
#define kTabBarHeight (kScreenHeight == 812 ? 83 : 49)
//NavigationBar和TabBar的高度
#define kNBarTBarHeight (kNavBarHeight + kTabBarHeight)
//如果是iPhoneX 底部留空隙34, 如果不是空隙为0
#define kIPhoneXBottomHeight (kScreenHeight == 812 ? 34 : 0)
//比例 以iPhone6 为基准
#define kRatio kScreenWidth/375
//按比例适配
#define kFit(num) kRatio * (num)
2. 颜色篇
#pragma mark --------------->> 颜色 <<-------------------
//随机颜色
#define kRandomColor [UIColor colorWithRed:arc4random() % 256 / 255. green:arc4random() % 256 / 255. blue:arc4random() % 256 / 255. alpha:1]
//自定义颜色
#define kColor(r, g, b) [UIColor colorWithRed:(r)/256.0 green:(g)/256.0 blue:(b)/256.0 alpha:1.0]
#define kRGBAColor(r, g, b, a) [UIColor colorWithRed:(r) / 255.0 green:(g) / 255.0 blue:(b) / 255.0 alpha:(a)]
//十六进制数 转UIColor
#define kColorFromRGBHexi(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
#define HexColorInt32_t(rgbValue) \
[UIColor colorWithRed:((float)((0x##rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((0x##rgbValue & 0x00FF00) >> 8))/255.0 blue:((float)(0x##rgbValue & 0x0000FF))/255.0 alpha:1]
//主题颜色
#define kThemeColor kColorFromRGBHexi(0xe01028)
3. 正则篇
// 验证条件
#define kAssert(Condition, Message)\
if (!(Condition)) {\
kShowError(Message);\
return;\
}
// 验证是文字是否输入
//
// @param __Text 文字长度
// @param __Message 错误提示
#define kVerifyText(__TextLength, __Message)\
if (!__TextLength) {\
kShowError(__Message);\
return;\
}
// 验证手机正则
//
// @param __Text 文字
// @param __Message 错误提示
#define kVerifyPhone(__Phone, __Message)\
if (![__Phone validateMobile]) {\
kShowError(__Message);\
return;\
}
// 验证身份证正则
//
// @param __Text 文字
// @param __Message 错误提示
#define kIDCard(__IDCard, __Message)\
if (![__IDCard validateIdentityCard]) {\
kShowError(__Message);\
return;\
}
4. 循环引用
//上面两个宏是RAC中的
#define WEAK @weakify(self);
#define STRONG @strongify(self);
#define kWeakSelf(type)__weak typeof(type)weak##type = type;
#define kStrongSelf(type)__strong typeof(type)type = weak##type;
5. 打印
//由于之前做项目一直遇到控制台打印的数据不完整, 总是出现一半一半的, 遂用C语言的pritf打印, 写成了宏, 才好!方便使用!
#ifdef DEBUG
#define kMyLog(format, ...) printf("class: <%p %s:(%d) > method: %s \n%s\n", self, [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, __PRETTY_FUNCTION__, [[NSString stringWithFormat:(format), ##__VA_ARGS__] UTF8String] )
#else
#define kMyLog(format, ...)
#endif
6. 其他
#pragma mark ----------------------- Other ----------------------
//将其他类型转换为字符串
#define kSTR(string) [NSString stringWithFormat:@"%@", string]
#define kUserDefaults [NSUserDefaults standardUserDefaults]
#define ShareApplicationDelegate [[UIApplication sharedApplication] delegate]
//字号
#define kFont(size) [UIFont systemFontOfSize:size]
#define kURL(urlStr) [NSURL URLWithString:urlStr]
#define kImage(image) [UIImage imageNamed:image]
#define kShowError(message) [MBProgressHUD showError:(message)]
#define kShowSuccess(message) [MBProgressHUD showSuccess:message]