在iOS 13及更高版本中,UIApplicationDidChangeStatusBarFrameNotification
已被弃用。相反,您可以使用UIWindowScene.didChangeStatusBarFrameNotification
来监听状态栏框架的变化。下面是一个使用新的替代方法的示例代码:
import UIKit
class ViewController: UIViewController {
// 监听状态栏框架变化的方法
@objc func statusBarFrameDidChange(notification: NSNotification) {
// 处理状态栏框架变化的逻辑
if let statusBarFrame = notification.userInfo?[UIApplication.statusBarFrameUserInfoKey] as? CGRect {
print("StatusBar Frame: \(statusBarFrame)")
}
}
override func viewDidLoad() {
super.viewDidLoad()
// 注册监听状态栏框架变化的通知
NotificationCenter.default.addObserver(self, selector: #selector(statusBarFrameDidChange), name: UIWindow.didChangeStatusBarFrameNotification, object: nil)
}
deinit {
// 移除通知的观察者
NotificationCenter.default.removeObserver(self, name: UIWindow.didChangeStatusBarFrameNotification, object: nil)
}
}
上述代码中,我们通过NotificationCenter.default.addObserver
方法注册了UIWindow.didChangeStatusBarFrameNotification
通知的观察者,并指定了statusBarFrameDidChange
方法作为触发的动作。然后,在statusBarFrameDidChange
方法中,我们可以处理状态栏框架变化的逻辑。
需要注意的是,在视图控制器销毁时,要使用NotificationCenter.default.removeObserver
方法移除观察者,以避免内存泄漏。