जवाबों:
क्या स्विफ्ट 2.x के साथ कोई समस्या है :
UIApplication.sharedApplication().statusBarFrame.size.height
स्विफ्ट 3 या स्विफ्ट 4 :
UIApplication.shared.statusBarFrame.height
सुनिश्चित करें कि UIKit
आयातित है
import UIKit
IOS 13 में, आपको एक विकृत चेतावनी मिलेगी "
iOS 13.0 में 'statusBarFrame' पदावनत किया गया: इसके बजाय विंडो दृश्य के statusBarManager संपत्ति का उपयोग करें।
इसे ठीक करने के लिए:
let height = view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
size
स्विफ्ट 3 में छोड़ सकते हैं : UIApplication.shared.statusBarFrame.height
पर्याप्त है।
view.window?
के साथUIApplication.shared.keyWindow?
अद्यतित उत्तर आईओएस 13+ और पुराने आईओएस वर्जन स्विफ्ट 5 के लिए
func getStatusBarHeight() -> CGFloat {
var statusBarHeight: CGFloat = 0
if #available(iOS 13.0, *) {
let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
statusBarHeight = window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
} else {
statusBarHeight = UIApplication.shared.statusBarFrame.height
}
return statusBarHeight
}
हैप्पी कोडिंग!
यही है वह जो मेरे द्वारा उपयोग किया जाता है:
struct Screen {
static var width: CGFloat {
return UIScreen.main.bounds.width
}
static var height: CGFloat {
return UIScreen.main.bounds.height
}
static var statusBarHeight: CGFloat {
return UIApplication.shared.statusBarFrame.size.height
}
}
तो आप कर सकते हैं:
Screen.statusBarHeight
इसका उद्देश्य जैसे- C:
var screenStatusBarHeight: CGFloat {
return UIApplication.sharedApplication().statusBarFrame.height
}
इसे एक मानक चर के रूप में शामिल किया गया है:
इब्राहिम से जवाब:
extension UIApplication {
static var statusBarHeight: CGFloat {
var statusBarHeight: CGFloat = 0
if #available(iOS 13.0, *) {
let window = shared.windows.filter { $0.isKeyWindow }.first
statusBarHeight = window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
} else {
statusBarHeight = shared.statusBarFrame.height
}
return statusBarHeight
}
}
मेरे स्विफ्टयूआई प्रोजेक्ट पर, इसने काम किया।
import UIKit
import SwiftUI
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let contentView = ContentView()
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
if let statusBarHeight = window.windowScene?.statusBarManager?.statusBarFrame.height {
SceneDelegateDataGetter.shared.height = statusBarHeight
}
window.rootViewController = HostingController(rootView: contentView)
self.window = window
window.makeKeyAndVisible()
}
}
class SceneDelegateDataGetter {
static let shared = SceneDelegateDataGetter()
public fileprivate(set) var height: CGFloat = 0
}
जब उपयोग करें,
SceneDelegateDataGetter.shared.height
UIApplication.shared.statusBarFrame.size.height