作者:mobiledu2502890617 | 来源:互联网 | 2023-01-15 17:29
使用xcode 9创建一些新的视图控制器,所以现在我有几个安全区域需要处理.
我目前正在尝试做一些全面的事情,这意味着保持不安全的区域(因为我总是显示状态栏)并且背景颜色延伸到全屏(以保持与我以前相似的行为).
另外需要注意的是,这也会影响页面控件,因为当你有一些系统时,系统会把它们放在底部的不安全区域,这个区域也会以黑色显示.
我找不到让背景颜色延伸到不安全区域后面的方法.有什么想法吗?
1> Krunal..:
它看起来像一个hacky技巧,但您可以尝试这样:
您可以在应用程序启动期间或视图控制器的viewDidLoad期间为状态栏设置背景颜色.在这里它以下列方式对我有用.
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarView?.backgroundColor = UIColor.green
}
}
or
// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarView?.backgroundColor = UIColor.green
return true
}
}
结果如下:
在iOS13上不起作用异常:NSInternalInconsistencyException异常原因:UIApplication上名为-statusBar或-statusBarWindow的应用程序:必须更改此代码,因为不再有状态栏或状态栏窗口。而是在窗口场景上使用statusBarManager对象。
2> pesch..:
您必须应用不同的约束.您的背景颜色应该超出安全区域一直延伸到superview.因此,您的约束需要设置为背景颜色的superview,但需要设置为ui视图的安全区域(按钮,tableViews等)