0

我想创建一个顶栏,我的代码如下所示:

struct MyView: View {
    var body: some View {
        VStack(alignment: .leading) {
            Bar()
            Spacer()
        }
    }
}

struct Bar: View {
    var body: some View {
        VStack(alignment: .leading, spacing: 0) {
            HStack {
                Spacer()
                Text("Community").comfortaa(weight: .bold, size: 20).foregroundColor(.therameBlack)
                Spacer()
                Button(action: {
                }) {
                    Image(systemName: "gearshape.fill").font(.headline).foregroundColor(.therameBlack)
                }
            }
        }.padding(.leading,5).padding(.trailing,5)
        .padding(.top,(UIApplication.shared.windows.last?.safeAreaInsets.top)! + 10)
    }
}

但是屏幕顶部仍然有间距:

我也尝试过这样做,正如这篇文章How to move vstack at the top in swiftui?

struct MyView: View {
    var body: some View {
        VStack {
            VStack(alignment: .leading) {
                TopBar()
                Spacer()
            }
            Spacer()
        }
    }
}

但它没有帮助......另外,如果我从 .safeAreaInsets 中删除 +10,顶部仍有空间。

4

2 回答 2

1

我想如果你删除.padding(.top,(UIApplication.shared.windows.last?.safeAreaInsets.top)! + 10)它会在屏幕顶部对齐

于 2020-12-27T10:52:16.203 回答
1

可能是填充是问题。只需删除复杂的填充并添加简单的填充。

struct TestView: View {
    var body: some View {
        VStack(alignment: .leading) {
            Bar()
            Spacer()
        }
    }
}


struct Bar: View {
    var body: some View {
        VStack(alignment: .leading, spacing: 0) {
            HStack {
                Spacer()
                Text("Community")
                Spacer()
                Button(action: {
                }) {
                    Image(systemName: "gearshape.fill").font(.headline)
                }
            }.padding()
        }
    }
}

结果画布预览

于 2020-12-27T10:47:06.607 回答