iOS开发常用宏定义(持续更新中)

有了宏, 开发方便了好多, 下面是开发中经常用到的宏, 不完整的地方, 欢迎提出来, 持续更新中...

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]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容