美文网首页
iOS 常用的宏定义

iOS 常用的宏定义

作者: 江湖闹士 | 来源:发表于2023-06-25 15:41 被阅读0次

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)

相关文章

  • iOS常用宏定义

    打印日志的几种写法 推荐文章iOS 日常工作之常用宏定义大全iOS常用宏定义 结束语 到这里就结束了,如若不懂的话...

  • iOS-常用宏定义

    [转自:iOS常用宏定义][http://www.cocoachina.com/ios/20161207/1831...

  • iOS 常用宏定义

    iOS 开发中使用一些常用宏定义可以大大提高开发效率,提高代码的重用性.以下是一些常用的宏定义: 像这些宏定义,在...

  • IOS NSLog宏定义

    IOS NSLog宏定义 标签(空格分隔): IOS IOS NSLog宏定义 宏定义NSLog方法,不用加";"...

  • iOS常用宏定义

    1.UI元素 //NavBar高度#defineNAVIGATIONBAR_HEIGHT 44//StatusBa...

  • iOS常用宏定义

    字符串是否为空 #define kStringIsEmpty(str) ([str isKindOfClass:[...

  • iOS常用宏定义

    字符串是否为空 数组是否为空 字典是否为空 是否是空对象 获取屏幕宽度与高度 ( " \ ":连接行标志,连接上下...

  • iOS常用宏定义

  • iOS常用宏定义

    #ifndef MacroDefinition_h #define MacroDefinition_h //---...

  • iOS常用宏定义

    整理 //常用宏定义 //是否为V以上系统 #define IOS(V) [[[UIDevice currentD...

网友评论

      本文标题:iOS 常用的宏定义

      本文链接:https://www.haomeiwen.com/subject/ghvdbrtx.html