Я новичок в 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()
}
}