我想在图像内添加多个文本,并具有相对于图像的特定坐标。文字大小可能会有所不同。我正在使用 kingfisher 来加载图像。
我尝试过使用 ZStack 来确定位置 x、y 坐标。但它没有按照我的预期工作。
使用
GeometryReader
和 SpatialTapGesture
尝试此方法,如图所示
在基本示例代码中,在点击的位置添加一些文本。
struct ContentView: View {
@State private var location = CGPoint(x: -111, y: -111)
var body: some View {
VStack {
GeometryReader { proxy in
Image(systemName: "globe").resizable()
.frame(width: 333, height: 333)
.background(.blue.opacity(0.3))
.gesture(SpatialTapGesture()
.onEnded({ tap in
print("----> tap: \(tap)")
location = tap.location
}))
Text("More text")
.position(x: location.x, y: location.y)
.foregroundStyle(.red)
}
}
}
}