[SwiftUI] Magnification Gesture

RudinP·2025년 8월 19일
0

Study

목록 보기
342/363

== 핀치 제스처

확대, 축소

1. 스케일 관리하는 State var 추가

@State private var finalScale: CGFloat = 1.0

2. gesture 속성 추가

    var magnification: some Gesture {
        MagnificationGesture().onChanged { scale in
            finalScale = scale
        }
        .onEnded { value in
            
        }
    }

3. scaleEffect 모디파이어 사용

4. gesture 모디파이어 사용

    var body: some View {
        Image("swiftui-logo")
            .resizable()
            .aspectRatio(contentMode: .fit)
            .frame(width: 200, height: 200)
            .scaleEffect(finalScale)
            .gesture(magnification)
            
    }

다시 핀치 시 마지막 크기 유지 방법

    @State private var finalScale: CGFloat = 1.0
    @State private var latestScale: CGFloat = 1.0 //최근 스케일 저장
    
    var magnification: some Gesture {
        MagnificationGesture().onChanged { scale in
            let delta = scale / latestScale
            latestScale = scale
            finalScale *= delta
        }
        .onEnded { value in
            latestScale = 1.0
        }
    }
profile
iOS 개발자가 되기 위한 스터디룸...

0개의 댓글