iOS 14获取iPhone的状态栏高度方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 14获取iPhone的状态栏高度方法相关的知识,希望对你有一定的参考价值。
参考技术A 以前我们获取状态栏高度常用的宏定义由于iPhone12等机型状态栏高度不是固定的了,所以我们要动态取状态栏的高度。
然而从ios 14开始,全面屏iPhone的状态栏高度不一定是44了,比如下面就是这些设备在iOS 14.1上的状态栏高度。
从iOS14开始StatusBar高度获取被弃用,需要使用UIStatusBarManager来获取statusBar的状态和属性,由于状态栏高度一般宏定义,常用工具类声明方法获取高度,宏定义时调用工具类方法获取,易读性高。我这里提供了OC版和swift两个版本的方法,供大家参考。
根据不同系统,通过相应方法获取状态栏高度。
1、以下为Object-C的实现方法
+ (CGFloat)statusBarHeight
CGFloat statusBarHeight = 0;
if (@available(iOS 13.0, *))
statusBarHeight = [UIApplication sharedApplication].windows.firstObject.windowScene.statusBarManager.statusBarFrame.size.height;
else
statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
return statusBarHeight;
2、以下为swift的实现方法
先要获取当前的window,再去获取状态栏高度
func keywindows() ->UIWindow?
var window:UIWindow? =nil
if #available(iOS13.0, *)
for windowScene:UIWindowScene in ((UIApplication.shared.connectedScenes as? Set)!)
if windowScene.activationState== .foregroundActive
window = windowScene.windows.first
break
returnwindow
else
return UIApplication.shared.keyWindow
以下为获取状态栏高度的方法
var statusHeight =0.0
if#available(iOS13.0, *)
letcurrentWindow =keywindows()
ifcurrentWindow!=nil
statusHeight =Double((currentWindow?.windowScene?.statusBarManager?.statusBarFrame.size.height)!)
else
statusHeight =Double(UIApplication.shared.statusBarFrame.size.height)
print("ios status height========>", statusHeight)
欢迎大家加入QQ群一起交流学习:
464406500
以上是关于iOS 14获取iPhone的状态栏高度方法的主要内容,如果未能解决你的问题,请参考以下文章