我更改了列表的 y 偏移量,现在它被剪裁了。
我正在努力做到这一点,以便当您滚动时,您可以部分看到标题下方的文本和视图顶部的按钮。换句话说,我希望屏幕的顶部稍微透明。
我将偏移量添加到列表中,这样它就不会与顶部的信息重叠。
上图是我的代码中显示的 VStack。我认为 VStack 可能会妨碍我,所以我将其注释掉,结果如下图所示:
这是我的代码:
var body: some View {
ZStack {
VStack {
HStack {
Button(action: {self.showAccountView.toggle()}) {
Image(systemName: "person.fill")
.renderingMode(.original)
.font(.system(size: 20, weight: .bold))
.frame(width: 44, height: 44)
.modifier(NavButtons())
}
.sheet(isPresented: $showAccountView) {
AccountView()
}
Spacer()
Button(action: { self.showHelpCenter.toggle()}) {
Image(systemName: "questionmark")
.renderingMode(.original)
.font(.system(size: 20, weight: .bold))
.modifier(NavButtons())
}
.sheet(isPresented: $showHelpCenter) {
HelpCenter()
}
}
.frame(maxWidth: .infinity)
.padding(.horizontal)
Spacer()
}
List {
ForEach (store.allLogs) { thing in
VStack (alignment: .leading) {
HStack {
Text("\(thing.date) , \(thing.time)")
}
Text(thing.notes)
.multilineTextAlignment(.leading)
}
}
}.offset(y: 50)
}
}
编辑:
这是一种可能的解决方案:
struct MyList: UIViewRepresentable {
func makeUIView(context: Context) -> UITableView {
let view = UITableView()
view.clipsToBounds = false
return view
}
func updateUIView(_ uiView: UITableView, context: Context) {
}
}
然后您将使用 makeUIView 和 updateUIView 来更新单元格。这只是一团糟,当时并没有真正使用 SwiftUI。
第二次编辑
我发现滚动视图和表单存在这个问题:
黑色是背景。这是所有三个的代码:
Group {
List ((0 ... 10), id: \.self) {
Text("Row \($0)")
}
.offset(y: 200)
.border(Color.blue, width: 3)
.background(Color.black)
ScrollView {
Text("Text")
}
.foregroundColor(.white)
.offset(y: 200)
.border(Color.blue, width: 3)
.background(Color.black)
Form {
Text("Text")
}
.offset(y: 200)
.border(Color.blue, width: 3)
.background(Color.black)
}
以下是与 List/Form/ScrollView 高度相同的框架名称:
列表:
PlainList.BodyContent
ListCore.Container
ListRepresentable
View Host
TableWrapper
UpdateCoalescingTableView
形式:
GroupList.BodyContent ListCore.Container
ListRepresentable
View
Host
TableWrapper
UpdateCoalescingTableView
ScrollView:
ScrollViewBody
SystemScrollView
查看宿主
HostingScrollView
我想我的问题已经从“我该怎么做……”变成了“为什么会这样?” 我对到底发生了什么感到很困惑。