状态栏的高度通知通知



我想获得状态栏的高度。我正常使用

[UIApplication sharedApplication].statusBarFrame.size.height

但是,当我在模拟器中按CMD y时,出现呼叫状态栏,我的视图控制器将向下移动。

在顶部有任何功能以获取此通话状态栏的高度?

谢谢

根据苹果文档:

uiapplicationwillchangestatusbarframenotification

在应用程序时发布 即将改变状态栏的框架。userInfo 字典包含一个封装CGRectNSValue对象 表达新状态栏的位置和大小的结构 框架。使用UIApplicationStatusBarFrameUserInfoKey访问此 值。

访问新的状态栏的CGRECT后,您可以找出等于{frame of status bar}.origin.y的"呼叫状态栏"的高度。

// ObjC
- (void) application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame
{
    NSLog(@"Status bar height %f", CGRectGetHeight(newStatusBarFrame));
}
// Swift
func application(_ application: UIApplication, willChangeStatusBarFrame newStatusBarFrame: CGRect) {
      print(newStatusBarFrame)
}