iOS 适配刘海屏 刘海 状态栏 底部安全距离

这篇博客详细介绍了刘海屏(iPhone X 及以上型号)出现前后,iOS应用中状态栏、导航栏、底部安全距离和tabBar的高度变化。提供了代码示例来动态获取状态栏高度并适配顶部和底部的安全区域,确保在不同屏幕类型的设备上正确显示。同时,还提到了适配iOS 11及以上系统的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刘海屏出来前

  • 状态栏:20pt
  • 导航栏:44pt
  • 底部安全距离:0pt
  • tabBar: 49

刘海屏出来后

  • 状态栏:44pt
  • 导航栏:44pt
  • 底部安全距离:34pt
  • tabBar: 49

代码

//获取状态栏的高度,全面屏手机的状态栏高度为44pt,非全面屏手机的状态栏高度为20pt
//状态栏高度
let statusBarHeight = UIApplication.shared.statusBarFrame.height;
//导航栏高度
let navigationHeight = (statusBarHeight + 44)
//tabbar高度
let tabBarHeight = (statusBarHeight==44 ? 83 : 49)
//顶部的安全距离
let topSafeAreaHeight = (statusBarHeight - 20)
//底部的安全距离,全面屏手机为34pt,非全面屏手机为0pt
let bottomSafeAreaHeight = (tabBarHeight - 49)

extension UIWindow {
    func jx_layoutInsets() -> UIEdgeInsets {
        if #available(iOS 11.0, *) {
            let safeAreaInsets: UIEdgeInsets = self.safeAreaInsets
            if safeAreaInsets.bottom > 0 {
                //参考文章:https://mp.weixin.qq.com/s/Ik2zBox3_w0jwfVuQUJAUw
                return safeAreaInsets
            }
            return UIEdgeInsets.init(top: 20, left: 0, bottom: 0, right: 0)
        }
        return UIEdgeInsets.init(top: 20, left: 0, bottom: 0, right: 0)
    }

    func jx_navigationHeight() -> CGFloat {
        let statusBarHeight = jx_layoutInsets().top
        return statusBarHeight + 44
    }
}

参考博客:

iOS灵活适配刘海屏手机的顶部状态栏高度和底部安全距离

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值