import SwiftUI struct ImageViewerView: View { let imageData: Data @State private var scale: CGFloat = 1.0 @Environment(\.dismiss) private var dismiss var body: some View { NavigationStack { GeometryReader { geo in if let uiImage = UIImage(data: imageData) { Image(uiImage: uiImage) .resizable() .aspectRatio(contentMode: .fit) .scaleEffect(scale) .gesture( MagnifyGesture() .onChanged { value in scale = value.magnification } .onEnded { _ in withAnimation { scale = max(1.0, min(scale, 5.0)) } } ) .onTapGesture(count: 2) { withAnimation { scale = scale > 1 ? 1 : 2 } } .frame(width: geo.size.width, height: geo.size.height) } } .toolbar { ToolbarItem(placement: .topBarTrailing) { Button("Done") { dismiss() } } } .background(.black) } } }