iOS 适配全面屏

Posted st646889325

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 适配全面屏相关的知识,希望对你有一定的参考价值。

一、如何知道手机是全面屏手机?

网上有好多人使用获取手机型号的方式来判断,本人觉得这种方式没有问题,只是作为一名开发者,大家都知道苹果每年都会更新新的机型。大家肯定不希望在每次苹果发布新机型后去更新版本,目前我有两种判断方式:

1.获取状态栏的高度,全面屏手机的状态栏高度为44pt,非全面屏手机的状态栏高度为20pt

CGFloat statusBarheight = [UIApplication sharedApplication].statusBarFrame.size.height;
NSLog(@"%f",statusBarheight);

使用宏定义以下参数,用于屏幕适配处理

//状态栏高度
#define kStatusBarHeight [UIApplication sharedApplication].statusBarFrame.size.height

//导航栏高度
#define kNavigationHeight (kStatusBarHeight + 44)

//tabbar高度
#define kTabBarHeight (kStatusBarHeight == 44 ? 83 : 49)

//顶部的安全距离
#define kTopSafeAreaHeight (kStatusBarHeight - 20)

//底部的安全距离
#define kBottomSafeAreaHeight (kTabBarHeight - 49)

2.获取底部的底部的安全距离,全面屏手机为34,非全面屏手机为0

CGFloat bottomSafeAreaHeight = [UIApplication sharedApplication].delegate.window.safeAreaInsets.bottom;
NSLog(@"%.2f", bottomSafeAreaHeight);

使用宏定义以下参数,用于屏幕适配处理

//底部的安全距离
#define kBottomSafeAreaHeight [UIApplication sharedApplication].delegate.window.safeAreaInsets.bottom

//顶部的安全距离
#define kTopSafeAreaHeight (kBottomSafeAreaHeight == 0 ? 0 : 24)

//状态栏高度
#define kStatusBarHeight (kBottomSafeAreaHeight == 0 ? 20 : 44)

//导航栏高度
#define kNavigationHeight (kBottomSafeAreaHeight == 0 ? 64 : 88)

//tabbar高度
#define kTabBarHeight (kBottomSafeAreaHeight + 49)

以上是关于iOS 适配全面屏的主要内容,如果未能解决你的问题,请参考以下文章

iOS 启动页和引导页的分割适配法

安卓和ios应用的机型适配难度有何差别

iOS适配机型常用宏以及机型尺寸备注)

iOS适配的相关内容的整理

iOS14iPadOS 14macOS Big SurwatchOS 7适配机型公布

iOS 15适配机型曝光:三款经典iPhone终于被放弃