gpt4 book ai didi

autocomplete - 如何使用 ZStack & Geometry 定位列表?

转载 作者:行者123 更新时间:2023-12-05 07:18:00 25 4
gpt4 key购买 nike

我正在尝试使用 ZStack 和字段的几何形状(位置和大小)将 ListView 直接定位在文本字段下方。这是为了创建一个自动完成的选择列表

设置偏移量似乎只成功了一半。

到目前为止,它看起来如下。

模拟器和设备如右图所示:

enter image description here

这里有一些有用的信息:

https://swiftui-lab.com/geometryreader-to-the-rescue/

import SwiftUI

struct TestView: View {

@State private var firstname = ""
@State private var lastname = ""
@State private var townCity = ""

@State private var rect: CGRect = CGRect()

var body: some View {
ZStack (alignment: .topLeading){
VStack{
Form {
Section {
TextField("Firstname", text: $firstname)
TextField("Lastname", text: $lastname)

ZStack{
VStack (alignment: .leading, spacing: 0){
TextField("Town/City", text: self.$townCity)
.background(GeometryGetterV2(rect: $rect))
}
.border(Color.black, width: 1)
}
Button("Save") {
}
}
}
}
SelectionsPickerV2()
.offset(x: rect.origin.x, y: rect.origin.y)
//.offset(x: rect.minX, y: rect.minY)
.frame(
width: rect.size.width,
height: rect.size.height * 7)
}
.coordinateSpace(name: "myZstack")
}
}

struct SelectionsPickerV2: View {

var body: some View {
VStack (alignment: .leading) {
List{
Text("Sydney, Australia")
Text("New York, New York")
Text("London, UK")
Text("Paris, France")
}
.background(Color.blue)
}
.border(Color.red, width: 1)
}
}

struct TestView_Previews: PreviewProvider {
static var previews: some View {
TestView()
}
}

struct GeometryGetterV2: View {
@Binding var rect: CGRect

var body: some View {
return GeometryReader { geometry in
self.makeView(geometry: geometry)
}
}

func makeView(geometry: GeometryProxy) -> some View {
DispatchQueue.main.async {
self.rect = geometry.frame(in: .named("myZstack"))
//self.rect = geometry.frame(in: .local)
//self.rect = geometry.frame(in: .global)
}

return Rectangle().fill(Color.clear)
}
}

最佳答案

您使用的 Xcode 版本是什么,它看起来很适合我的版本(Xcode 11.2,beta 11B41)。

enter image description here

关于autocomplete - 如何使用 ZStack & Geometry 定位列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58513331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com