#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125,2436), [[UIScreen mainScreen] currentMode].size) : NO)
// 屏幕宽度,会根据横竖屏的变化而变化
#ifndef SCREEN_WIDTH
#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width
#endif
// 屏幕高度,会根据横竖屏的变化而变化
#ifndef SCREEN_HEIGHT
#define SCREEN_HEIGHT [[UIScreen mainScreen] bounds].size.height
#endif
// 屏幕宽度,跟横竖屏无关
#define DEVICE_WIDTH (IS_LANDSCAPE ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width)
// 屏幕高度,跟横竖屏无关
#define DEVICE_HEIGHT (IS_LANDSCAPE ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height)
// 有效高度,iPhoneX会去除无效的状态栏高度24和tabbar高度43
#define SAFE_SCREEN_H ((SCREEN_HEIGHT<812)?SCREEN_HEIGHT:(SCREEN_HEIGHT-67))
//获得控件的坐标和宽高
#define FRAME_X(v) (v).frame.origin.x
#define FRAME_Y(v) (v).frame.origin.y
#define FRAME_WIDTH(v) (v).frame.size.width
#define FRAME_HEIGHT(v) (v).frame.size.height
//做自动化布局经常用的 和UI适配使用
#define ADAPT_W(v) (SCREEN_WIDTH*v/375.0f)
#define ADAPT_H(v) (((SCREEN_HEIGHT<812)?SCREEN_HEIGHT:(SCREEN_HEIGHT-145))*v/667.0f)
#define ADAPTX_H(v) (SAFE_SCREEN_H*(v)/667.0f)
#define MinX(v) CGRectGetMinX((v).frame)
#define MinY(v) CGRectGetMinY((v).frame)
#define MaxX(v) CGRectGetMaxX((v).frame)
#define MaxY(v) CGRectGetMaxY((v).frame)
//坐标转换使用的宏定义
#define RECT_CHANGE_x(v,x) CGRectMake(x, FRAME_Y(v), FRAME_WIDTH(v), FRAME_HEIGHT(v))
#define RECT_CHANGE_y(v,y) CGRectMake(FRAME_X(v), y, FRAME_WIDTH(v), FRAME_HEIGHT(v))
#define RECT_CHANGE_point(v,x,y) CGRectMake(x, y, FRAME_WIDTH(v), FRAME_HEIGHT(v))
#define RECT_CHANGE_width(v,w) CGRectMake(FRAME_X(v), FRAME_Y(v), w, FRAME_HEIGHT(v))
#define RECT_CHANGE_height(v,h) CGRectMake(FRAME_X(v), FRAME_Y(v), FRAME_WIDTH(v), h)
#define RECT_CHANGE_size(v,w,h) CGRectMake(FRAME_X(v), FRAME_Y(v), w, h)
//状态栏高度
#define STATUSBAR_HEIGHT [[UIApplication sharedApplication] statusBarFrame].size.height
//导航栏有关的
#define NAVIGATION_TITLEVIEW_WIDTH 140.0f
#define NAVIGATION_TITLEVIEW_HEIGHT 30.0f
#define NAVIGATION_TITLEVIEW_CurXLoc 90.0f
#define NAVIGATION_TITLEVIEW_CurYLoc 7.0f
#define UINAVIGATIONBAR_HEIGHT 44.5f
#define UITABBAR_HEIGHT (iPhoneX ? 83.f : 49.f)
#define TOP_BUTTOM_HEIGHT 50.0f
#define BOTTOM_VIEW_HEIGHT 45.0f
#define STATUS_BAR_HEIGHT (iPhoneX ? 44.f : 20.0f)
#define LIMITLINE_HEIGHT 0.5f
#define NAVIGATION_TOPVIEW_HEIGHT 44.0f
#define TOP_TOOL_BAR_HEIGHT (NAVIGATION_TOPVIEW_HEIGHT+STATUS_BAR_HEIGHT)
//底部安全区高度
#define kBottomSafeAreaHeight \
({\
CGFloat heigt = 0;\
UIWindow *window = [UIApplication sharedApplication].keyWindow;\
if (@available(iOS 11.0, *)) {\
heigt = window.safeAreaInsets.bottom;\
}\
(heigt);\
})\
#pragma mark - 角度弧度转化
#define DEGREES_TO_RADIAN(x) (M_PI * (x) / 180.0)
#define RADIAN_TO_DEGREES(radian) (radian*180.0)/(M_PI)
#pragma mark - Font
#define FONT(size) [UIFont systemFontOfSize:size]
#define FONT_BOLD(size) [UIFont boldSystemFontOfSize:size]
#define FONT_MEDIUM(size) \
({\
UIFont *font;\
if (@available(iOS 8.2, *)) {\
font = [UIFont systemFontOfSize:size weight:UIFontWeightMedium];\
} else {\
font = [UIFont systemFontOfSize:size];\
}\
(font);\
})\
#define FONT_SEMIBOLD(size) [UIFont systemFontOfSize:size weight:UIFontWeightSemibold]