2023年12月10日发(作者:三星盖乐世zflip)
iOS适配iPhoneX状态栏高度
开发的时候,宏定义用的挺普遍,好多人喜欢把导航高度直接定义成 64.f,但是在iPhoneX系列中(iPhoneX、iPhoneXS、iPhoneXR、
iPhoneXS Max),导航栏的高度为88.f.
非iPhoneX:状态栏高度(20.f) + 导航栏高度(44.f) = 64.f,
iPhoneX系列:状态栏高度(44.f) + 导航栏高度(44.f) = 88.f.
对于状态栏高度,我们可以代码自动获取
[[UIApplication sharedApplication] statusBarFrame].
所有iPhone系列:状态栏高度
([[UIApplication sharedApplication] statusBarFrame].)+导航栏高度(44.f)
但是有一种情况,当我们设置了:
[[UIApplication sharedApplication] setStatusBarHidden:YES];
如果把当前页面的状态栏隐藏了,那么此时
[[UIApplication sharedApplication] statusBarFrame]. = 0
所以我们在宏定义的时候还是得判断当前状态栏的状态
/** 获取状态栏高度 */
#define State_Bar_H ( ( ![[UIApplication sharedApplication] isStatusBarHidden] ) ? [[UIApplication sharedApplication] statusBarFrame]. : (IS_IPHONEX_SET?44.f:
首先判断状态栏是否隐藏,如果没有隐藏,就代码获取,如果隐藏了,就判断是否是iPhoneX系列产品,如果是就是44.f,否则就是20.f
下面iPhoneX的宏定义判断
#define DT_IS_IPHONEX_XS (SCREEN_HEIGHT == 812.f) //是否是iPhoneX、iPhoneXS
#define DT_IS_IPHONEXR_XSMax (SCREEN_HEIGHT == 896.f) //是否是iPhoneXR、iPhoneX Max
#define IS_IPHONEX_SET (DT_IS_IPHONEX_XS||DT_IS_IPHONEXR_XSMax) //是否是iPhoneX系列手机
发布者:admin,转转请注明出处:http://www.yc00.com/num/1702151503a1181056.html
评论列表(0条)