목록 보기
Webview에서 핀치 줌(pinch zoom) 구현하기
프론트엔드

Webview에서 핀치 줌(pinch zoom) 구현하기

두줄요약

TouchEvent와 두 터치 간 거리 변화를 이용해 Webview 핀치 줌을 구현했습니다. 기본 확대 차단, 중심점 보정, 멀티터치 처리 시 주의점을 함께 설명합니다.

구조와 흐름

  • touchstart·touchmove·touchend·touchcancel 기반 멀티터치 처리
  • changedTouches의 identifier로 진행 중인 두 터치 객체 추적
  • 두 터치 좌표의 유클리드 거리와 이전 거리 차이로 확대·축소 방향 판별

해결 방법

  • 브라우저 기본 핀치 줌 방지를 위한 preventDefault와 touch-action: none 적용
  • 터치 입력 영역과 확대 대상 영역 분리
  • 상태 객체의 scale을 갱신하고 CSS transform: scale() 렌더링

주의할 점

  • changedTouches의 유사 배열 및 복수 터치 이벤트 처리 필요
  • iOS Safari에서 viewport meta만으로 기본 확대 제어 불가
  • 기본 확대 차단에 따른 성능·접근성·UX 부작용 검토 필요

적용해볼 점

  • 핀치 중심점과 translateX·translateY 보정으로 중심 기준 확대 구현
  • transformOrigin: top left와 대상 기준 좌표 계산의 조합
  • 드래그, 이동 범위 제한, 최대 확대 비율 추가 가능성

카카오 계열사 채용30건

채용 사이트에서 전체 보기

다음 읽기

#TypeScript 주제를 이어서 읽기

Webview에서 핀치 줌(pinch zoom) 구현하기

웹뷰에서 핀치 줌을 직접 구현하는 방법을 설명했습니다. TouchEvent와 좌표 보정을 활용해 확대 중심을 유지하는 로직을 소개했습니다.

카카오엔터테인먼트FE
카카오엔터테인먼트FE
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...