我是SwiftUI的新手,正在尝试用它来测试一个想法。我确定我想做的很简单,但是我很想念它。我想获得实际图像的大小,随着比例的变化。我阅读的所有内容都告诉我要使用GeometryReader。但是,这些接缝为我提供了显示视图的大小。随着比例的变化,它不会发生变化。 下面是我的代码,但是没有产生我所需要的。我的最终目标是让我知道图像的大小,并且可以限制用户,以使他们不能独立于比例尺将图像滑出视图。
使用以下代码行,我希望能够将图像定位在从左侧(0.0偏移)到右侧(1.0 x?)的任何位置,而与图像的比例无关。
.position(x: self.sharedImageOffset * geometry.size.width, y: 200 )
感谢您的帮助。
import SwiftUI
struct ContentView: View {
@State var sharedImageScale: CGFloat = 1.0
@State var sharedImageOffset: CGFloat = 0.0
var body: some View {
VStack{
GeometryReader { geometry in
Image("IMG_1650")
.resizable()
.aspectRatio(contentMode: .fill)
.scaleEffect(self.sharedImageScale)
.position(x: self.sharedImageOffset * geometry.size.width, y: 0 )
.background(Color.blue)
.gesture(
TapGesture()
.onEnded { _ in
print("SIZE \(geometry.size)")
}
)
}.border(Color.green, width: 2)
.clipped()
HStack{
Text("Scale")
Slider(value: self.$sharedImageScale, in: 0.5...10 ).frame(minWidth: 10, idealWidth: 100, maxWidth: 200)
Text("Offset")
Slider(value: self.$sharedImageOffset, in: -1.0...1 ).frame(minWidth: 10, idealWidth: 100, maxWidth: 200)
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}