Demo.swift
ContentView.swift
App.swift
import SwiftUI
struct MagnifyClampedDemo: View {
@State private var scale: CGFloat = 1
let minS: CGFloat = 0.5
let maxS: CGFloat = 2.0
func clamp(_ v: CGFloat) -> CGFloat { min(max(v, minS), maxS) }
var body: some View {
Image(systemName: "photo")
.resizable().scaledToFit().frame(height: 120)
.scaleEffect(scale)
.gesture(
MagnificationGesture()
.onChanged { value in scale = clamp(value) }
.onEnded { _ in withAnimation(.easeInOut) { scale = 1 } }
)
}
}
import SwiftUI
struct ContentView: View {
var body: some View { MagnifyClampedDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}