无法在 SwiftUI 中更改视图的背景颜色
Unable to change background color of view in SwiftUI
我正在尝试更改此视图的主要背景颜色,但无法执行。我试图将 background(Color.green) 放在 HStack、VSTack 甚至 ZStack 上,但它没有用,不确定我是否放在正确的位置。默认情况下,它采用 phone 或白色的模拟器颜色,但我想应用自定义背景色
我的 Xcode 版本是 11.5
struct HomePageView: View {
@State var size = UIScreen.main.bounds.width / 1.6
var body: some View {
GeometryReader{_ in
VStack {
HStack {
ZStack{
// main home page components here....
NavigationView{
VStack {
AssignmentDaysView()
}.background(Color.lairBackgroundGray)
.frame(width: 100, height: 100, alignment: .top)
.navigationBarItems(leading: Button(action: {
self.size = 10
}, label: {
Image("menu")
.resizable()
.frame(width: 30, height: 30)
}).foregroundColor(.appHeadingColor), trailing:
Button(action: {
print("profile is pressed")
}) {
HStack {
NavigationLink(destination: ProfileView()) {
LinearGradient.lairHorizontalDark
.frame(width: 30, height: 30)
.mask(
Image(systemName: "person.crop.circle")
.resizable()
.scaledToFit()
)
}
}
}
).navigationBarTitle("Home", displayMode: .inline)
}
HStack{
menu(size: self.$size)
.cornerRadius(20)
.padding(.leading, -self.size)
.offset(x: -self.size)
Spacer()
}
Spacer()
}.animation(.spring()).background(Color.lairBackgroundGray)
Spacer()
}
}
}
}
}
struct HomePageView_Previews: PreviewProvider {
static var previews: some View {
HomePageView()
}
}
在你的 NavigationView
中你有一个 VStack
。相反,您可以使用 ZStack
并在 VStack
.
下方添加背景
尝试以下操作:
NavigationView {
ZStack {
Color.green // <- or any other Color/Gradient/View you want
.edgesIgnoringSafeArea(.all) // <- optionally, if you want to cover the whole screen
VStack {
Text("assignments")
}
.background(Color.gray)
.frame(width: 100, height: 100, alignment: .top)
}
}
注意:您使用了许多包装在 GeometryReader
中的堆栈,但您并不使用它们。考虑通过删除不必要的堆栈来简化视图。此外,如果您使用 UIScreen.main.bounds
,您可能不需要 GeometryReader(但是,在 SwiftUI 中首选 GeometryReader
)。
尝试删除一些层:您可以从删除最上面的层开始:GeometryReader
、VStack
、HStack
...
尝试以下操作:
也更改视图背景颜色,尤其是安全区域
struct SignUpView: View {
var body: some View {
ZStack {
Color.blue //background color
}.edgesIgnoringSafeArea(.all)
我正在尝试更改此视图的主要背景颜色,但无法执行。我试图将 background(Color.green) 放在 HStack、VSTack 甚至 ZStack 上,但它没有用,不确定我是否放在正确的位置。默认情况下,它采用 phone 或白色的模拟器颜色,但我想应用自定义背景色 我的 Xcode 版本是 11.5
struct HomePageView: View {
@State var size = UIScreen.main.bounds.width / 1.6
var body: some View {
GeometryReader{_ in
VStack {
HStack {
ZStack{
// main home page components here....
NavigationView{
VStack {
AssignmentDaysView()
}.background(Color.lairBackgroundGray)
.frame(width: 100, height: 100, alignment: .top)
.navigationBarItems(leading: Button(action: {
self.size = 10
}, label: {
Image("menu")
.resizable()
.frame(width: 30, height: 30)
}).foregroundColor(.appHeadingColor), trailing:
Button(action: {
print("profile is pressed")
}) {
HStack {
NavigationLink(destination: ProfileView()) {
LinearGradient.lairHorizontalDark
.frame(width: 30, height: 30)
.mask(
Image(systemName: "person.crop.circle")
.resizable()
.scaledToFit()
)
}
}
}
).navigationBarTitle("Home", displayMode: .inline)
}
HStack{
menu(size: self.$size)
.cornerRadius(20)
.padding(.leading, -self.size)
.offset(x: -self.size)
Spacer()
}
Spacer()
}.animation(.spring()).background(Color.lairBackgroundGray)
Spacer()
}
}
}
}
}
struct HomePageView_Previews: PreviewProvider {
static var previews: some View {
HomePageView()
}
}
在你的 NavigationView
中你有一个 VStack
。相反,您可以使用 ZStack
并在 VStack
.
尝试以下操作:
NavigationView {
ZStack {
Color.green // <- or any other Color/Gradient/View you want
.edgesIgnoringSafeArea(.all) // <- optionally, if you want to cover the whole screen
VStack {
Text("assignments")
}
.background(Color.gray)
.frame(width: 100, height: 100, alignment: .top)
}
}
注意:您使用了许多包装在 GeometryReader
中的堆栈,但您并不使用它们。考虑通过删除不必要的堆栈来简化视图。此外,如果您使用 UIScreen.main.bounds
,您可能不需要 GeometryReader(但是,在 SwiftUI 中首选 GeometryReader
)。
尝试删除一些层:您可以从删除最上面的层开始:GeometryReader
、VStack
、HStack
...
尝试以下操作:
也更改视图背景颜色,尤其是安全区域
struct SignUpView: View {
var body: some View {
ZStack {
Color.blue //background color
}.edgesIgnoringSafeArea(.all)