SwiftUi - 背景无法更改/无法访问

Posted

技术标签:

【中文标题】SwiftUi - 背景无法更改/无法访问【英文标题】:SwiftUi - Background can't be changed / can't be reached 【发布时间】:2019-08-28 12:51:27 【问题描述】:

我的背景有问题。 自从我玩 SwiftUi 以来,一切都很好。

昨天我用背景填充了我的屏幕,只是顶部的配件不起作用,所以我撤消了我的更改。现在的问题是:我无法再了解我的背景了...

其实我无法达到我的背景,所以我无法改变它。

这是我的代码:

struct ContentView : View 
@State private var name = String()
@State private var pw = String()

var body: some View 
    VStack
        NavigationView 

            Spacer()
            //Einleitung
            VStack
                Image("user")
                    .resizable()
                    .frame(width: 100 , height: 100)
                Spacer()
                Text("Hello User.")
                Text("Please insert your Nickname and your Password")
                    .lineLimit(nil)
            .background(Color.blue)
            .padding()
            //TextField eingabe für Name + Passwort
            HStack
                Spacer()
                Text("Username")
                .font(.headline)
                Spacer()
            Text("Password")
                .font(.headline)
                Spacer()
            .background(Color.red)
            HStack
                Spacer()
                TextField($name,placeholder: Text("Fill your name"))
                    .textFieldStyle(.roundedBorder)
                    .scaledToFit()
                Spacer()
                SecureField($pw, placeholder: Text("123456789"))
                    .scaledToFit()
                    .textFieldStyle(.roundedBorder)
                    Spacer()
                .background(Color.green)
            //LOGIN BTN
            Spacer()
            Spacer()

            Button(action: 
                print("Hallo \(self.name) - dein Password ist \(self.pw)")
            //NavigationDestinationLink :
                )
                
                    HStack
                        Spacer()
                        Text("Login")
                            .color(.white)
                            .bold()
                            .font(.headline)
                            .padding(.horizontal)
                        Spacer()
                    
                    
                    .background(Color.red,cornerRadius: 40)
                    .frame(width: 200, alignment: .bottom)
                    Spacer()
            .background(Color.black)
        .background(Color.yellow)
   

【问题讨论】:

【参考方案1】:

navigationView I described earlier here in this answer 内部视图的背景颜色存在问题。它的摘要是在您要更改背景颜色的视图之上还有另一个白色视图。所以你看不到颜色。

但是现在,你应该像这样重新排列你的视图,

1- NavigationView 应该是第一个

2- 其他所有内容(包括外部的 VStack)都应包裹在 ZStack

3- Color 作为ZStack 的第一视图

var body: some View 
    NavigationView 
        ZStack 
            Color.yellow
            VStack
                Text("Everything else")
            
        
    

我希望 Apple 尽快为此类设置提供直接 API。

【讨论】:

以上是关于SwiftUi - 背景无法更改/无法访问的主要内容,如果未能解决你的问题,请参考以下文章

Swiftui + Firestore - 无法访问 Firestore 中的字段

SwiftUI PlaygroundBook 我无法访问其他视图

无法从 SwiftUI 框架中的资产目录访问的图像

Stack内的SwiftUI TextField锁定无法访问

在 SwiftUI 中更改 UIView 背景颜色

SwiftUI:如何使列表视图透明?如何更改列表视图背景颜色?