我有一个List
部分被半透明视图覆盖(我们称之为 overlay)。我的问题是,对于长列表,最后一行是不可访问的,因为它们被覆盖。
我使用ZStack
来布局最终视图。我考虑过在最后一行添加某种 *padding *,可以使列表内容更大一些,这样它就可以完全滚动出覆盖层,但我不知道如何操作,甚至不知道使用ZStack
是否是处理列表的正确方法。
import SwiftUI
struct ListWithBottomOverlay: View {
var body: some View {
GeometryReader { proxy in
ZStack {
List {
ForEach(1..<20) { number in
Text("\(number)")
}
}
VStack {
Spacer().frame(maxHeight: .infinity)
VStack {
HStack {
Button(action: {}, label: { Text("Hello") })
.frame(minHeight: 100)
}
HStack {
Button(action: {}, label: { Text("World!") })
.frame(minHeight: 100)
}
}
.frame(maxWidth: .infinity)
.background(Color(.yellow).opacity(0.8))
}
}
}
}
}
struct ListWithBottomOverlay_Previews: PreviewProvider {
static var previews: some View {
ListWithBottomOverlay()
}
}
如果这是一个重复的问题,我很抱歉,我刚刚开始学习SwiftUI,所以我有点迷失了关于如何搜索正确的术语。
2条答案
按热度按时间nkoocmlb1#
可能的解决方案是计算覆盖区域的高度,并将具有该高度的一些透明视图添加到列表的底部。
下面是一个使用视图首选项的方法演示。使用Xcode 12 / iOS 14进行测试
alen0pnh2#
现在您可以添加到列表。safeAreaInset