其实笔者很想弄出一个通用的宏,不那么怕出新机会失效的宏,但奈何实在想不到。只能照XStyle不一样的数据写出宏。下面列出的宏在XS Max时还是有效的。至于以后就说不准了,各位还是要根据新机分辨率或者宽高适当修改。
#define K_iPhoneXStyle ( (CGSizeEqualToSize(CGSizeMake(414, 896), [[UIScreen mainScreen] bounds].size)) || ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) )
或者
#define K_iPhoneXStyle ((KScreenWidth == 375.f && KScreenHeight == 812.f ? YES : NO) || (KScreenWidth == 414.f && KScreenHeight == 896.f ? YES : NO))
还有其他的宏
#define KScreenWidth ([UIScreen mainScreen].bounds.size.width) #define KScreenHeight ([UIScreen mainScreen].bounds.size.height) #define K_iPhoneXStyle ((KScreenWidth == 375.f && KScreenHeight == 812.f ? YES : NO) || (KScreenWidth == 414.f && KScreenHeight == 896.f ? YES : NO)) #define KStatusBarAndNavigationBarHeight (K_iPhoneXStyle ? 88.f : 64.f) #define KStatusBarHeight (K_iPhoneXStyle ? 44.f : 20.f) #define KTabbarHeight (K_iPhoneXStyle ? 83.f : 49.f) #define KMagrinBottom (K_iPhoneXStyle ? 34.f : 0.f)
还有些宏,是适配字体或者view用的。将在后面介绍UI在不同尺寸下适配方案再提起。
#define KScaleWidth(width) ((width)*(KScreenWidth/375.f)) #define IsIphone6P SCREEN_WIDTH==414 #define SizeScale (IsIphone6P ? 1.5 : 1) #define kFontSize(value) value*SizeScale #define kFont(value) [UIFont systemFontOfSize:value*SizeScale]
最后说一句,利用宏来写虽然简单,但有以下弊端。
找不到能可靠性强的宏XStyle。iphone x屏幕价格毕竟以后的手机分辨率或者屏幕宽高肯定会变化(即使短时间内不会)。要适应新机型就要重新上线。
假如以后新出的机刘海长度变了,到时又要修改宏。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/sanxing/article-90192-2.html
小米你为何如此diao
相信党和国家
这也不能吃