1、日志输出
#ifdef DEBUG
// 调试状态
#define NSLog(FORMAT, ...) fprintf(stderr, "%s:%d\t%s\n", [[[NSString stringWithUTF8String: __FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat: FORMAT, ## __VA_ARGS__] UTF8String]);
#else
// 发布状态
#define NSLog(...) nil;
#endif
2、判断设备
#define mark - =====判断设备=====
//如果有新出的机型打开模拟器 截图查看尺寸(就知道新机型的分辨率),填上去就可以了。
#define isIphone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIphone5S ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIphone5C ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIphoneSEtwo ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIphoneSE ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone6S ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone7 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone8 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone6SPlus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone7Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone8Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhoneXR ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhoneXSMax ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhoneXS ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone11 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone11Pro ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone11ProMax ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone12 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1170, 2532), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone12Pro ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1170, 2532), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone12ProMax ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1284, 2778), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone12Min ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1080, 2340), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone13 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1170, 2532), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone13Pro ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1170, 2532), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone13ProMax ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1284, 2778), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone13Min ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1080, 2340), [[UIScreen mainScreen] currentMode].size) : NO)
#define isIPhone14 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1170, 2532), [[UIScreen mainScreen] currentMode].size) : NO)
#define IC_Pad ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
//判断是否是ipad
#define isPad ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
//判断iPhone5系列
#define iPhone_5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhone6 6s 7系列
#define iPhone_6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhone6p 6sp 7p系列
#define iPhone_6P ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
#define isiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
//判断 齐刘海系列
#define iPhoneX kStatusBarHeight>20.0f && isiPhone
/**
* 系统判断
*/
#define ZL_IOS7 ([EMOCheckTool iPhoneDeviceVersion:7.0])
#define ZL_IOS8 ([EMOCheckTool iPhoneDeviceVersion:8.0])
#define ZL_IOS9 ([EMOCheckTool iPhoneDeviceVersion:9.0])
#define ZL_IOS10 ([EMOCheckTool iPhoneDeviceVersion:10.0])
#define ZL_IOS11 ([EMOCheckTool iPhoneDeviceVersion:11.0])
#define ZL_IOS12 ([EMOCheckTool iPhoneDeviceVersion:12.0])
#define ZL_IOS13 ([EMOCheckTool iPhoneDeviceVersion:13.0])
#define ZL_IOS14 ([EMOCheckTool iPhoneDeviceVersion:14.0])
#define ZL_IOS15 ([EMOCheckTool iPhoneDeviceVersion:15.0])
3、快速配置 imageName
#define IMAGE(_image_) [UIImage imageNamed:_image_]
//默认占位头像
#define DEFAULT_USER_HEADIMG [UIImage imageNamed:@"EMO_logo_1"]
4、设置 frame
/**
* 快速设置 point
*/
#define POINT(_X_,_Y_) CGPointMake(_X_, _Y_)
/**
* 快速设置 FRAME
*/
#define FRAME(_X_,_Y_,_W_,_H_) CGRectMake(_X_, _Y_, _W_, _H_)
/**
* 快速设置 size
*/
#define SIZE(_W_,_H_) CGSizeMake(_W_, _H_)
/**
* 快速设置 bounds
*/
#define BOUNDS(_X_,_Y_,_W_,_H_) CGRectMake(0, 0, _W_, _H_)
/**
* 快速设置 range
*/
#define RANGE(_location_,_length_) NSMakeRange(_location_,_length_)
5、常用尺寸
// 常用尺寸
#define KSCREEN_H ([[UIScreen mainScreen] bounds].size.height)
#define KSCREEN_W ([[UIScreen mainScreen] bounds].size.width)
#define KSCREEN_SIZE ([[UIScreen mainScreen] bounds].size)
6、根据ip6的屏幕来拉伸适配
//根据ip6的屏幕来拉伸
#define Iphone6ScaleWidth KSCREEN_W/375.0
#define Iphone6ScaleHeight KSCREEN_H/667.0
//代码适配宽度和高度间距
#define kScale_Width(value) Iphone6ScaleWidth* value
#define kScale_Height(value) Iphone6ScaleHeight * value
7、版本号
//版本号
#define APP_VERSION [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]
8、安全区域高度
#define kStatusBarHeight ([UIApplication sharedApplication].windows.firstObject).windowScene.statusBarManager.statusBarFrame.size.height
//导航栏高
#define kNavHeight (kStatusBarHeight + 44.0)
//tabBar高
#define kTabBarHeight ( kStatusBarHeight>20.0? 83.0:49.0 )
//tabBar底边 高
#define kTabBottomHeight ( kStatusBarHeight>20.0? 34.0:0)
9、UIScrollView内边距调整
#define AdjustsScrollViewInsetNever(controller,view) if(@available(iOS 11.0, *)) {view.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;} else if([controller isKindOfClass:[UIViewController class]]) {controller.automaticallyAdjustsScrollViewInsets = false;}
10、弱引用
#define WeakSelf __weak typeof(self) weakSelf = self;
#define StrongSelf __strong typeof(self) self = weakSelf;
11、通知
//发送通知
#define POST_NOTIFICATATION(_name_) [[NSNotificationCenter defaultCenter] postNotificationName:_name_ object:nil];
//移除通知
#define REMOVE_NOTIFICATATION(_name_) [[NSNotificationCenter defaultCenter] removeObserver:self name:_name_ object:nil];
12、单利对象
//通知中心 (单例对象)
#define NOTIFICATIONCENTER [NSNotificationCenter defaultCenter]
//user存储
#define USERDEFAULTS [NSUserDefaults standardUserDefaults]
13、十六进制颜色
#define RGBS(rgbValue,A) ([UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \ green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \ blue:((float)(rgbValue & 0xFF))/255.0 \ alpha:A])
//使用事例:
//RGBS(0x141414, 0.14)
14、 字符串转URL,int 转字符串
//字符串转URL
#define URL(_url_) [NSURL URLWithString:_url_]
//int 转字符串
#define IntToString(integer) [NSString stringWithFormat:@"%zd",integer]
15、 字符串拼接
//字符串拼接
#define FORMAT(s, ...) [NSString stringWithFormat:s, ##__VA_ARGS__]
16、 获取当前根视图
#define RootVC [([UIApplication sharedApplication].windows.firstObject) rootViewController]
17、异步线程
#pragma mark ================== 异步线程
#ifndef emo_dispatch_queue_async_safe
#define emo_dispatch_queue_async_safe(queue, block)\
if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(queue)) == 0) {\
block();\
} else {\
dispatch_async(queue, block);\
}
#endif
#ifndef emo_dispatch_main_sync_safe
#define emo_dispatch_main_sync_safe(block) emo_dispatch_queue_async_safe(dispatch_get_main_queue(), block)
#endif
18、字体
/**
* 快速设置 PingFang(后面的方法需要自定义 UIFont 分类,里面实现对应的方法,否则会报错)
*/
#define PFSCMedium(_SIZE_) [UIFont fontWithMedium_size:_SIZE_]
#define PFSCRegular(_SIZE_) [UIFont fontWithRegular_size:_SIZE_]
#define PFSCBold(_SIZE_) [UIFont fontWithSemibold_size:_SIZE_]
#define PFSCLight(_SIZE_) [UIFont fontWithLight_size:_SIZE_]
19、主题颜色,全局的颜色设置
//透明颜色
#define KClearColor [UIColor clearColor]
// 背景颜色
#define KBackgroundColor RGBS(0xF5F5F9, 1)
//主题色
#define KMainColor RGBS(0x4DE4B6, 1)
//分割线颜色
#define KLineColor RGBS(0x4f0f0f0, 1)
20、适配文字大小
//适配后的字体大小(其中,“375” 是以 iPhone 6/7/8 的屏幕宽度为基准,进行适配计算。)
#define AdaptedFontSize(size) floor((size) * [UIScreen mainScreen].bounds.size.width / 375.0)
网友评论