Ole*_*hko 91 statusbar ios swift
如何在Swift中以编程方式获取状态栏的高度?
在Objective-C中,它是这样的:
[UIApplication sharedApplication].statusBarFrame.size.height.
Run Code Online (Sandbox Code Playgroud)
Kir*_*ins 222
Swift 2.x有什么问题:
UIApplication.sharedApplication().statusBarFrame.size.height
Run Code Online (Sandbox Code Playgroud)
Swift 3或Swift 4:
UIApplication.shared.statusBarFrame.height
Run Code Online (Sandbox Code Playgroud)
确保UIKit已导入
import UIKit
Run Code Online (Sandbox Code Playgroud)
Md.*_*san 18
更新的答案支持 Swift 5 的 iOS 13+ 和更旧的 iOS 版本
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
}
Run Code Online (Sandbox Code Playgroud)
快乐编码!
这是我使用的:
struct Screen {
static var width: CGFloat {
return UIScreen.main.bounds.width
}
static var height: CGFloat {
return UIScreen.main.bounds.height
}
static var statusBarHeight: CGFloat {
let viewController = UIApplication.shared.windows.first!.rootViewController
return viewController!.view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
Screen.statusBarHeight
Run Code Online (Sandbox Code Playgroud)
Swift 只是一种不同的语言。API 元素是相同的。也许是这样的:
let app = UIApplication.sharedApplication()
let height = app.statusBarFrame.size.height
Run Code Online (Sandbox Code Playgroud)