Я пытаюсь разрешить масштабирование изображения таким образом, чтобы размер содержащего фрейма также изменялся, а заголовок внизу перемещался вниз. Это внутри прокрутки, чтобы изображение можно было перемещать в увеличенном виде. Следующая половина кода работает, но изображение нельзя перетаскивать, как можно было ожидать из прокрутки. Кроме того, HStack обрезается слева, оставляя зазор справа.
struct ImageView: View {
@State var scale = CGFloat(1.0)
@State var lastScaleValue: CGFloat = 1
@State var frameWidth: CGFloat = 0
@State var imageSize: CGFloat = 1
@State private var selection = 0
var body: some View {
GeometryReader { geometry in
ScrollView(){ //Scrollview for page
ScrollView([.horizontal, .vertical]){//Scrollview for image
HStack{
Image(uiImage: ImageSet.getImage(1))
.resizable()
// .scaledToFit()
// .aspectRatio(1, contentMode: .fit)
.scaleEffect(self.lastScaleValue)
.gesture(MagnificationGesture().onChanged { val in
if val <= 1 {
self.frameWidth = geometry.size.width
}
else{
self.frameWidth = geometry.size.width * val
}
print("Parent Width: \(geometry.size.width)")
print("Scale: \(val)")
print("Frame Width: \(self.frameWidth)")
}
)
.frame(minWidth: 0, maxWidth: .infinity,minHeight: 0,maxHeight: .infinity)
}
.padding(0)
.frame(minWidth: 0, maxWidth: self.frameWidth, minHeight: 0, maxHeight: self.frameWidth)
.background(Color.green)
}
.frame(minWidth: 0, maxWidth: geometry.size.width, minHeight: 0, maxHeight: self.frameWidth)
.background(Color.yellow)
Text("Text pushed down in resizing")
Text("Text pushed down in resizing")
}
.onAppear {
UITableView.appearance().separatorStyle = .none
self.frameWidth = geometry.size.width
}
.navigationBarTitle(Text(self.horoscope.firstname), displayMode: .inline)
}