【发布时间】:2014-02-24 02:49:44
【问题描述】:
我想获取状态栏的高度。这个我正常使用
[UIApplication sharedApplication].statusBarFrame.size.height
但是当我在模拟器中按 Cmd + Y 时,会出现呼叫状态栏,并且我的 View Controller 会向下移动。
有没有像顶部这样的函数来获取这个通话状态栏的高度?
谢谢
【问题讨论】:
标签: ios objective-c statusbar
我想获取状态栏的高度。这个我正常使用
[UIApplication sharedApplication].statusBarFrame.size.height
但是当我在模拟器中按 Cmd + Y 时,会出现呼叫状态栏,并且我的 View Controller 会向下移动。
有没有像顶部这样的函数来获取这个通话状态栏的高度?
谢谢
【问题讨论】:
标签: ios objective-c statusbar
根据 Apple 文档:
UIApplicationWillChangeStatusBarFrameNotification
发布时应用 即将更改状态栏的框架。
userInfo字典包含一个NSValue对象,该对象封装了一个CGRect表示新状态栏位置和大小的结构 框架。使用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)
}
【讨论】: