iPhone屏幕尺寸/导航高度

屏幕尺寸数据

手机机型(iPhone) 屏幕尺寸(inch) 逻辑分辨率(pt) 设备分辨率(px) 缩放因子 (Scale Factor) 像素密度(ppi)
3GS 3.5 320×480 320×480 @1x 163
4(s) 3.5 320×480 640×960 @2x 326
5(s/se) 4 320×568 640×1136 @2x 326
6(s)/7/8 4.7 375×667 750×1334 @2x 326
6(s)/7/8 Plus 5.5 414×736 1242×2208 @3x 401
X/XS/11 Pro 5.8 375×812 1125×2436 @3x 458
XR/11 6.1 414×896 828×1792 @2x 326
XS Max/11 Pro Max 6.5 414×896 1242×2688 @3x 458
12 mini/13mini 5.4 375×812 1080×2340 @3x 467
12/12 Pro/13/13 Pro/14 6.1 390×844 1170×2532 @3x 460
12 Pro Max/13 Pro Max/14 Plus 6.7 428×926 1284×2778 @3x 458
14 Pro 6.1 393×852 1179×2556 @3x 460
14 Pro Max 6.7 430×932 1290×2796 @3x 460

iPhone 状态栏/导航栏/tabbar高度

手机机型(iPhone) 状态栏高度(pt) 导航栏高度(pt) tabbar高度(pt)
x以前 20/40 44 49
x以后 44 44 83

综上:导航栏以下的视图顶部的y坐标非全面屏手机应该为64,全面屏
变成88了。底部Tabbar也由原来的49,增加了34,变成了83的高度。
注意:iOS 14 iPhone11/iPhone12的状态栏高度为48/47,导航高度为92/91
因此,对导航高度的宏定义不能直接用64和88两个高度来区分非全面屏和全面屏。具体如下
如果对导航视图高度要求比较准确的话可以根据屏幕宽高判断具体机型,再进行宏定义,状态栏隐藏的情况下iPhone11(48)、iPhone12(47)状态栏高度有误差

// 屏幕宽度
#define KSCreenWidth [[UIScreen mainScreen] bounds].size.width
// 屏幕高度
#define KSCreenHeight [[UIScreen mainScreen] bounds].size.height
// 是否是iPhone
#define kIs_iphone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
// 是否为全面屏
#define kIs_iPhoneX KSCreenWidth >=375.0f && KSCreenHeight >=812.0f&& kIs_iphone
// 状态栏是否隐藏
#define kStatusBarIsHidden ([[UIApplication sharedApplication] isStatusBarHidden])
// 状态栏高度   注意:状态栏隐藏的情况下iPhone11(48)、iPhone12(47)状态栏高度有误差
#define  StatusBarHeight    (!kStatusBarIsHidden ? [[UIApplication sharedApplication] statusBarFrame].size.height : (kIs_iPhoneX ? 44.f : 20.f))
// 导航栏高度
#define  NavigationBarHeight  44.f
// 菜单栏高度
#define  TabbarHeight         (kIs_iPhoneX ? (49.f+34.f) : 49.f)
// 菜单栏底部安全距离
#define  TabbarSafeBottomMargin         (kIs_iPhoneX ? 34.f : 0.f)
// Status bar & navigation bar height.
#define  StatusBarAndNavigationBarHeight  (StatusBarHeight + NavigationBarHeight)

你可能感兴趣的:(iPhone屏幕尺寸/导航高度)