swift VStack无法填满所有屏幕高度(框架无限不起作用)

wfveoks0  于 2024-01-05  发布在  Swift
关注(0)|答案(1)|浏览(136)

我有一个ZStack,它包含一个vstack和一个我创建的视图形式的覆盖EditHabitNameOverlay。我的问题是,我淡化了原始视图,并在显示覆盖时禁用它,但我不能设法使主视图扩展到全屏的高度,因为在所附的图像中,淡化的分割似乎不正确。我尝试过带框架的无限,但它不起作用。

var body: some View {
    NavigationView {
        ScrollView {
            ZStack(alignment: .center) {
                VStack(spacing: 0) {
                    ...
                }

                if showEditNameOverlay {
                    Color(.black)
                        .ignoresSafeArea()
                        .opacity(0.3)
                    
                    EditHabitNameOverlay(passedHabit: passedHabit) {
                        withAnimation {
                            showEditNameOverlay.toggle()
                        }
                    }
                }
            }
        }
        .background(.fWhite)
        .ignoresSafeArea()
        .onAppear {
            vm.fetchMonthDays(savedDays: savedDays)
        }
    }
}

字符串


的数据

xmjla07d

xmjla07d1#

代码中的ZStack只影响VStack的内容,而不是整个View。所以需要ZStack来封装ScrollView

var body: some View {
    NavigationView {
        ZStack(alignment: .center) {
            ScrollView {
                VStack(spacing: 0) {
                    ...
                }
            }.background(.fWhite)
            if showEditNameOverlay {
                Color(.black)
                    .ignoresSafeArea()
                    .opacity(0.3)
                
                EditHabitNameOverlay(passedHabit: passedHabit) {
                    withAnimation {
                        showEditNameOverlay.toggle()
                    }
                }
            }
        }.ignoresSafeArea()
        .onAppear {
            vm.fetchMonthDays(savedDays: savedDays)
        }
    }
}

字符串

相关问题