在呼叫状态栏中覆盖导航栏

时间:2018-01-23 22:55:57

标签: ios swift uinavigationbar

每当我正在通话时,绿色通话状态栏都会显示在导航栏的顶部。热点状态栏也是如此。

目前正在使用最新的swift

我猜我需要使用:

func application(_ application: UIApplication, didChangeStatusBarFrame oldStatusBarFrame: CGRect) {
}

我对我需要做的事情没有任何好运

1 个答案:

答案 0 :(得分:2)

您在跟踪代理中的框架更改时走在正确的轨道上。

首先注册您的视图控制器(或任何类需要调整到状态栏框架更改)

//
// In some class that needs to update for status bar changes
//

NSNotificationCenter.defaultCenter().addObserver(
    self,
    selector: #selector(statusBarFrameWillChange:),
    name: UIApplicationWillChangeStatusBarFrameNotification,
    object: nil)

第二次,在您的app委托中,添加以下方法(类似于您的方法),以便在状态栏更改时调用

optional func application(_ application: UIApplication, 
 willChangeStatusBarFrame newStatusBarFrame: CGRect)

终于,在这里你可以简单地向系统发布一个通知,提醒所有听众观察这个变化,以便处理状态栏的框架变化:

func post(_ notification: Notification)

在您的观察者中,在发布通知时我选择调用的statusBarFrameWillChange方法中,只需相对于状态栏框架向下或向上调整导航栏的框架。< / p>