SwiftUI-如何将顶部安全区域的背景色更改为灰色?
我想将顶部安全区域的背景色从绿色更改为灰色。我到处找了,但找不到任何解决办法。预览中的屏幕如下所示 我的代码:SwiftUI-如何将顶部安全区域的背景色更改为灰色?,swiftui,Swiftui,我想将顶部安全区域的背景色从绿色更改为灰色。我到处找了,但找不到任何解决办法。预览中的屏幕如下所示 我的代码: struct ContentView: View { @State var name = "" init() { //Use this if NavigationBarTitle is with Large Font UINavigationBar.appearance().largeTitleText
struct ContentView: View {
@State var name = ""
init() {
//Use this if NavigationBarTitle is with Large Font
UINavigationBar.appearance().largeTitleTextAttributes = [.foregroundColor: UIColor.red]
UINavigationBar.appearance().backgroundColor = .gray
}
var body: some View {
NavigationView {
ZStack{
VStack{
TextField("Name", text: $name)
.frame(height:200)
.padding()
.background(backgrounImage())
.overlay(RoundedRectangle(cornerRadius: 20).stroke(Color.gray,lineWidth: 4))
.padding()
Spacer()
}.navigationTitle("Tanvir")
.background(Color.green.edgesIgnoringSafeArea(.all))
}
}
}
}
您可以在
ZStack
顶部添加另一个视图:
var body: some View {
NavigationView {
ZStack(alignment: .top) { // <- Don't forget this
,,,
GeometryReader { reader in
Color.yellow
.frame(height: reader.safeAreaInsets.top, alignment: .top)
.ignoresSafeArea()
}
}
}
}
您可以在
ZStack
顶部添加另一个视图:
var body: some View {
NavigationView {
ZStack(alignment: .top) { // <- Don't forget this
,,,
GeometryReader { reader in
Color.yellow
.frame(height: reader.safeAreaInsets.top, alignment: .top)
.ignoresSafeArea()
}
}
}
}
使用此
ui应用程序
扩展来更改状态栏的颜色
extension UIApplication {
/**
Get status bar view
*/
var statusBarUIView: UIView? {
let tag = 13101996
if let statusBar = self.windows.first?.viewWithTag(tag) {
self.windows.first?.bringSubviewToFront(statusBar)
return statusBar
} else {
let statusBarView = UIView(frame: UIApplication.shared.windows.first?.windowScene?.statusBarManager?.statusBarFrame ?? .zero)
statusBarView.tag = tag
self.windows.first?.addSubview(statusBarView)
return statusBarView
}
}
}
用法
struct contentview状态栏:视图{
@State var name=“”
init(){
//如果NavigationBarTitle使用大字体,请使用此选项
UINavigationBar.appearance().largeTitleTextAttributes=[.foregroundColor:UIColor.red]
UINavigationBar.appearance().backgroundColor=.gray
}
var body:一些观点{
导航视图{
ZStack{
VStack{
TextField(“名称”,text:$Name)
.框架(高度:200)
.padding()
.background(backgroundImage())
.overlay(圆角矩形(拐角半径:20).笔划(颜色.灰色,线宽:4))
.padding()
垫片()
}.navigationTitle(“Tanvir”)
.背景(颜色.绿色.边缘识别安全区域(.all))
}
}奥纳佩尔先生{
UIApplication.shared.statusBarUIView?.backgroundColor=.gray/使用此扩展来更改状态栏的颜色
extension UIApplication {
/**
Get status bar view
*/
var statusBarUIView: UIView? {
let tag = 13101996
if let statusBar = self.windows.first?.viewWithTag(tag) {
self.windows.first?.bringSubviewToFront(statusBar)
return statusBar
} else {
let statusBarView = UIView(frame: UIApplication.shared.windows.first?.windowScene?.statusBarManager?.statusBarFrame ?? .zero)
statusBarView.tag = tag
self.windows.first?.addSubview(statusBarView)
return statusBarView
}
}
}
用法
struct contentview状态栏:视图{
@State var name=“”
init(){
//如果NavigationBarTitle使用大字体,请使用此选项
UINavigationBar.appearance().largeTitleTextAttributes=[.foregroundColor:UIColor.red]
UINavigationBar.appearance().backgroundColor=.gray
}
var body:一些观点{
导航视图{
ZStack{
VStack{
TextField(“名称”,text:$Name)
.框架(高度:200)
.padding()
.background(backgroundImage())
.overlay(圆角矩形(拐角半径:20).笔划(颜色.灰色,线宽:4))
.padding()
垫片()
}.navigationTitle(“Tanvir”)
.背景(颜色.绿色.边缘识别安全区域(.all))
}
}奥纳佩尔先生{
UIApplication.shared.statusBarUIView?.backgroundColor=.gray//它正在工作,但是我可以获得颜色视图的动态高度而不是给出近似值吗?更新为使用几何体读取器来获得精确高度。是的,它正在工作。但是在每个屏幕中,我需要设置ZStack和您的解决方案,这将是重复的。这完全是另一个问题估计,但不要担心,检查更新的答案;)它正在工作,但我可以得到颜色视图的动态高度,而不是给出近似值吗?更新为使用几何体读取器获得精确高度。是的,它正在工作。但在每个屏幕中,我需要设置ZStack和您的解决方案,这将是重复的。这完全是另一个问题但是不要担心,查看更新后的答案;)它可以工作,但是在SwiftUI 2中有没有更简单的解决方案?没有。状态栏没有特殊的功能。它可以工作,但是在SwiftUI 2中有没有更简单的解决方案?没有。状态栏没有特殊的功能。