SwiftUI计算UIimage的角坐标

SwiftUI calculate coordinate of the corner of UIimage

我正在寻找视图中图像显示的 4 个角的正确坐标 x、y。

我写了这段代码..来计算第一个左上角坐标: 但这是错误的.. 结果在 x 和 y 上应该是 0 一些值。

我的代码:

struct ContentView: View {
    @StateObject var am = AppManager()
    @State var spikoPic = #imageLiteral(resourceName: "spiko-16.jpeg")
    @State var centerOFimage = CGSize(width: 0, height: 0)
    var body: some View {
        
        GeometryReader { proxy in
            ZStack {
                Image(uiImage: spikoPic)
                    .resizable()
                    .scaledToFit()
                    .position(x: proxy.size.width/2, y: proxy.size.height/2)
            }.edgesIgnoringSafeArea(.all)
                .onAppear(perform: {
                    centerOFimage = CGSize(width: proxy.size.width/2, height: proxy.size.height/2)
                    let toplx = centerOFimage.width - (spikoPic.size.width/2) //??
                    let toply = centerOFimage.height - (spikoPic.size.height/2) //??
                    print(toplx)
                    print(toply)
                })
        }
        
    }
    
}

你可以通过图像背景精确计算,在全局坐标中得到矩形,如

这是主要部分:

     Image(uiImage: spikoPic)
        .resizable()
        .scaledToFit()

        .background(GeometryReader {
            Color.clear.preference(key: ViewRectKey.self,
                value: [[=10=].frame(in: .global)])
        })
        .onPreferenceChange(ViewRectKey.self) { rects in
           print(rects.first ?? .zero)
           // calculate here !!
        }

测试 Xcode 13.3 / iOS 15.4

Complete test code is here