build: prevent compile-time failure in application extensions

This commit is contained in:
Ivan Smolin 2023-07-11 16:30:34 +03:00
parent b22fd239e9
commit 094c0c40d8
1 changed files with 10 additions and 1 deletions

View File

@ -11,7 +11,16 @@ public extension UIViewController {
if #available(iOS 13.0, *) {
statusBarHeight = window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
} else {
statusBarHeight = UIApplication.shared.statusBarFrame.height
// prevent compile-time failure: 'shared' is unavailable in application extensions for iOS
let sharedSelector = Selector(("shared"))
if UIApplication.responds(to: sharedSelector),
let sharedApplication = UIApplication.perform(sharedSelector).takeRetainedValue() as? UIApplication {
statusBarHeight = sharedApplication.statusBarFrame.height
} else { // application extension, statusBarFrame is not applicable
statusBarHeight = .zero
}
}
let navigationBarHeight = navigationBar?.bounds.height ?? 0