苹果全面屏(iphoneXR/XS/XS Max)适配和一些常用宏定义

  • iPhone X
    375 * 812
    width = 1125, height = 2436

  • iPhone XS
    375 * 812
    width = 1125, height = 2436

  • iPhone XS Max
    414 * 896
    width = 1242, height = 2688

  • iPhone XR
    414 * 896
    width = 828, height = 1792

  • iPhone 8 plus (7p /7sp /6p /6sp)
    414 * 736
    width = 1242, height = 2208

  • iPhone 8 (7 /7s /6 /6s)
    375 * 667
    width = 750, height = 1334

  • iPhone SE (5s / 5c)
    320 * 568
    width = 640, height = 1136

//获取显示分辨率
[UIScreen mainScreen].bounds
//获取像素分辨率
[[UIScreen mainScreen] currentMode].size
苹果全面屏(iphoneXR/XS/XS Max)适配和一些常用宏定义_第1张图片
2018新iPhone屏幕对比.png
根据屏幕的分辨率, 可以用来判断手机机型
// 判断是否为iPhone x 或者 xs
#define iPhoneX [[UIScreen mainScreen] bounds].size.width == 375.0f && [[UIScreen mainScreen] bounds].size.height == 812.0f
// 判断是否为iPhone xr 或者 xs max
#define iPhoneXR [[UIScreen mainScreen] bounds].size.width == 414.0f && [[UIScreen mainScreen] bounds].size.height == 896.0f
// 是全面屏手机
#define isFullScreen (iPhoneX || iPhoneXR)

// 全面屏适配 适配 
// 状态栏高度
#define kStateBarHeight (isFullScreen ? 44.0 : 20.0)
// 导航栏高度
#define kNavigationBarHeight (kStateBarHeight + 44.0)
// 底部tabbar高度
#define kTabBarHeight (isFullScreen ? (49.0+34.0) : 49.0)

//也可以参照这种方式 通过对比像素分辨率定义出所有的全面屏手机
#define iPhone6P ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)
关于屏幕适配的一些其他宏定义
// 屏幕适配
#define Screen_bounds [[UIScreen mainScreen] bounds]
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
#define kScreenWidth [UIScreen mainScreen].bounds.size.width

// 以6、6s、7、7s、8的宽度为基准进行比例缩放
// 当前屏幕和6P的比例关系
#define ScreenWidth6 375.0

// 元素以6和6s和7屏幕宽度为基准,做高宽等比例缩放  750设计稿标注尺寸/2即可适配
#define kWidth(R) ((R)*(kScreenWidth)/ScreenWidth6)
// 这里的568我是针对5s为标准适配的,如果需要其他标准可以修改
#define kHeight(R) kWidth(R)
#define kFont(R) ((R)*(kScreenWidth)/ScreenWidth6)  //28Px=14 22px=12
关于颜色的宏定义
// 随机颜色
#define RandomColor [UIColor colorWithRed:(arc4random()%255) / 255.0f green:(arc4random()%255) / 255.0f blue:(arc4random()%255) / 255.0f alpha:1]

#define RGBCOLOR(R, G, B) [UIColor colorWithRed:(R) / 255.0f green:(G) / 255.0f blue:(B) / 255.0f alpha:1]
#define RGBACOLOR(R, G, B, A) [UIColor colorWithRed:(R) / 255.0f green:(G) / 255.0f blue:(B) / 255.0f alpha:A]
系统版本宏定义
#define IOS [[[UIDevice currentDevice] systemVersion] floatValue]
#define IOS8 [[[UIDevice currentDevice] systemVersion] floatValue] >= 8 ? YES : NO
#define IOS9 [[[UIDevice currentDevice] systemVersion] floatValue] >= 9 ? YES : NO
#define IOS10 [[[UIDevice currentDevice] systemVersion] floatValue] >= 10 ? YES : NO
#define IOS11 [[[UIDevice currentDevice] systemVersion] floatValue] >= 11 ? YES : NO
其他宏定义
// weakSelf
#define WEAKSELF typeof(self) __weak weakSelf = self;

// 安全字符串
#define SAFE_STRING(x) ((x)==nil)?@"":(x)
// 接口返回的是number,但是model却用string接收的情况
#define NUMBER_TO_STRING(x) [(x) isKindOfClass:[NSNumber class]]?[NSString stringWithFormat:@"%@",x]:(x)

// 获取时间戳
#define getTimeIntervalSince1970 [NSString stringWithFormat:@"%llu", [NSNumber numberWithDouble:([[NSDate date] timeIntervalSince1970] * 1000)].longLongValue]

// debug下打印日志, release下不执行NSLog代码
#ifdef DEBUG
#define NSLog(...) printf("myAppInfo %s\n %s\n",__func__, [[NSString stringWithFormat:__VA_ARGS__]UTF8String]);
#else
#define NSLog(format, ...) 
#endif

你可能感兴趣的:(苹果全面屏(iphoneXR/XS/XS Max)适配和一些常用宏定义)