演示 - 在 SwiftUI 顶部显示视图(我不想导航)

fak*_*iho 5 swift swiftui

嘿,我想在视图中间显示一个自定义视图我尝试添加 ZStack 并居中,但不起作用..这是我的代码

 var body: some View {
        VStack(alignment: .leading, spacing: 8) {
            headerView.padding().background(Color.white)
            ZStack(alignment: .center) {
                if(incomeFill_show) {
                    BudgetAlert(amount: .constant("400"))
                }

                List() {
                    VStack {
                        Section(header: self.getHeaderView()) {
                            ForEach(categoriesData) { category in
                                HStack(alignment: .bottom) {
                                    CategoryProgressView(category: category, value: .constant(.random(in: 0.1 ... 1)))
                                    self.valuesText(category: category)
                                }

                            }
                            .colorMultiply(Colors.SharedColors.backgroundColor)
                        }
                    }
                }
                .colorMultiply(Colors.SharedColors.backgroundColor)
                .onAppear {UITableView.appearance().separatorStyle = .none}
                .onDisappear { UITableView.appearance().separatorStyle = .singleLine }
            }


        }.background(Colors.SharedColors.backgroundColor)
    }
Run Code Online (Sandbox Code Playgroud)

我想要的只是显示BudgetAlert()具有模糊背景,如下所示:

在此输入图像描述

fak*_*iho 2

我通过放置解决了这个问题

if(incomeFill_show) {
                    BudgetAlert(amount: .constant("400"))
                }
Run Code Online (Sandbox Code Playgroud)

在列表的底部:像这样

var body: some View {
        VStack(alignment: .leading, spacing: 8) {
            headerView.padding().background(Color.white)
            ZStack(alignment: .center) {

                List() {
                    VStack {
                        Section(header: self.getHeaderView()) {
                            ForEach(categoriesData) { category in
                                HStack(alignment: .bottom) {
                                    CategoryProgressView(category: category, value: .constant(.random(in: 0.1 ... 1)))
                                    self.valuesText(category: category)
                                }

                            }
                            .colorMultiply(Colors.SharedColors.backgroundColor)
                        }
                    }
                }
                .colorMultiply(Colors.SharedColors.backgroundColor)
                .onAppear {UITableView.appearance().separatorStyle = .none}
                .onDisappear { UITableView.appearance().separatorStyle = .singleLine }

                if(incomeFill_show) {
                    BudgetAlert(amount: .constant("400"))
                }
            }


        }.background(Colors.SharedColors.backgroundColor)
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

对于模糊背景,您可以在此处查看以下代码:

var body: some View {
        VStack {
            Spacer()
            ZStack(alignment: .center) {
                RoundedRectangle(cornerRadius: 10).foregroundColor(Color.white)
                VStack {
                    Text("Add your Income").font(Fonts.mediumFont)
                    HStack(alignment: .center, spacing: 0) {

                        CustomTextField(placeHolderLabel: "Amount", val: $amount, keyboardType: UIKeyboardType.decimalPad).padding()

                         HStack {
                             Button("\(currency.rawValue)"){
                                 self.show_currencyActionsheet = true
                             }
                                 .font(Fonts.callout)
                                 .foregroundColor(Colors.textFieldFloatingLabel)
                             .actionSheet(isPresented: self.$show_currencyActionsheet) {self.actionSheetCurrency}
                             Image(systemName: "chevron.down")
                              .imageScale(.small)
                        }.padding()
                    }.padding([.leading,.trailing])

                    Button(action: {
                        self.callBack()
                    }) {

                        Text("                Add Income                ").font(Fonts.callout).foregroundColor(Color.white)
                    }
                    .padding()
                    .background(Colors.darkGreen)
                    .clipShape(Capsule())
                }
            }.frame(minHeight: 150, idealHeight: 182, maxHeight: 200)
            .padding()
            Spacer()

        }.background(VisualEffectView(effect: UIBlurEffect(style: .dark))
        .edgesIgnoringSafeArea(.all))
    }

struct VisualEffectView: UIViewRepresentable {
    var effect: UIVisualEffect?
    func makeUIView(context: UIViewRepresentableContext<Self>) -> UIVisualEffectView { UIVisualEffectView() }
    func updateUIView(_ uiView: UIVisualEffectView, context: UIViewRepresentableContext<Self>) { uiView.effect = effect }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但我更喜欢褪色的背景