我一直在做一個專案,我需要在視圖中獲取 Image 中每個角的 x,y 位置。有可能實作這一目標嗎?我正在為 macOS 構建,我知道我可以使用 GeometryReader 獲取影像的 x,y 位置,但是如何獲取每個角的 x,y 位置?

我試圖通過假設初始位置為 0,0 來使用以下 hack 獲取 x,y:
.onTapGesture {
print("Top left corner: \(CGPoint(x: 0, y: 0))")
print("Top right corner: \(CGPoint(x: self.myImage.width, y: 0))")
print("Bottom left corner: \(CGPoint(x: 0, y: self.myImage.height))")
print("Bottom right corner: \(CGPoint(x: self.myImage.width, y: self.myImage.height))")
}
uj5u.com熱心網友回復:
這是GeometryReader為您提供的一種方法:
struct ContentView: View {
var body: some View {
GeometryReader { proxy in
Image("ferrari")
.resizable()
.scaledToFit()
.onTapGesture {
print("Top left corner: \(CGPoint(x: 0, y: 0))")
print("Top right corner: \(CGPoint(x: proxy.size.width, y: 0))")
print("Bottom left corner: \(CGPoint(x: 0, y: proxy.size.height))")
print("Bottom right corner: \(CGPoint(x: proxy.size.width, y: proxy.size.height))")
}
}
.padding()
}
}

uj5u.com熱心網友回復:
您可以func frame(in: CoordinateSpace) -> CGRect在 Geometry Proxy 上使用該方法,但您必須知道CoordinateSpace矩形位于哪個位置。你想要影像視圖在它自己的坐標空間中的大小嗎?其父視圖的坐標空間?它所在的視窗的坐標空間?包含視窗的螢屏坐標空間...
一旦您CGRect在某個坐標空間中表示視圖,您就可以在矩形上使用minX, minY, maxX, 之類的方法maxY來構造四個角。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/345144.html
上一篇:如何獲取螢屏大小直到標簽欄底部
