# React Native Gesture Image Viewer ## 가이드 - [개요](/ko/guide/getting-started/overview.md): React Native에서 이미지 갤러리나 콘텐츠 뷰어를 구현할 때, 복잡한 제스처 처리와 애니메이션 구현으로 어려움을 겪으신 적이 있으신가요? 기존 라이브러리들은 커스터마이징이 어렵거나 성능 문제가 있었습니다. react-native-gesture-image-viewer는 React Native Reanimated와 Gesture Handler를 기반으로 한 고성능 범용 제스처 뷰어 라이브러리로, 이미지뿐만 아니라 비디오, 커스텀 컴포넌트 등 모든 콘텐츠에 완전한 커스터마이징과 직관적인 제스처 지원을 제공합니다. - [설치](/ko/guide/getting-started/installation.md): 필수 요구사항 - [빠른 시작](/ko/guide/getting-started/quick-start.md) - [AI](/ko/guide/getting-started/ai.md): AI가 이 라이브러리의 기능, 버전별 문서, 프로젝트 규칙을 더 잘 이해해서 개발이나 트러블슈팅 과정에서 더 정확한 도움을 줄 수 있도록, 이 프로젝트는 다음 기능들을 제공합니다. ## Others - [1.x에서 2.x로 마이그레이션](/ko/guide/migration-from-1.x.md) - [성능 최적화 팁](/ko/guide/performance-optimization-tips.md): renderItem 함수는 useCallback으로 감싸서 불필요한 리렌더링을 방지하세요. 대용량 이미지의 경우 expo-image나 FastImage 사용을 권장합니다. 많은 수의 이미지를 다룰 때는 FlashList 사용을 권장합니다. FlashList Performance 가이드 디바이스에서 테스트하세요. (시뮬레이터에서는 성능이 제한될 수 있습니다.) - [기본 사용법](/ko/guide/usage/basic-usage.md) - [커스텀 컴포넌트](/ko/guide/usage/custom-components.md): react-native-gesture-image-viewer는 강력한 기능으로 완벽한 컴포넌트 커스터마이징이 가능합니다. 이미지뿐만 아니라 원하는 컴포넌트로 제스처를 지원하는 아이템을 만들 수 있습니다. - [제스처 기능](/ko/guide/usage/gesture-features.md): react-native-gesture-image-viewer는 뷰어에 필요한 다양한 제스처를 지원합니다. 제스처 동작의 기본값은 아래 예제를 참고해주세요. - [GestureViewer Props](/ko/guide/usage/gesture-viewer-props.md): enableLoop (기본값: false) 루프 모드를 활성화합니다. true일 때 마지막 아이템에서 다음으로 가면 첫 번째로, 첫 번째에서 이전으로 가면 마지막으로 돌아갑니다. enableSnapMode (기본값: false) 스냅 스크롤 모드를 활성화합니다. false (기본값): 페이징 모드 (pagingEnabled: true)전체 화면 크기 단위로 스크롤됩니다true: 스냅 모드 (snapToInterval 자동 계산)snapToInterval이 width와 itemSpacing 값을 기반으로 자동 계산됩니다아이템 간격이 필요할 때 이 옵션을 사용하세요 itemSpacing (기본값: 0) 아이템 간의 간격을 픽셀 단위로 설정합니다. enableSnapMode가 true일 때만 적용됩니다. autoPlay (기본값: false) 자동 재생 모드를 활성화합니다. true일 때 지정된 간격 후 다음 아이템으로 자동으로 재생됩니다. enableLoop이 활성화되면 마지막 아이템에서 다음으로 가면 첫 번째로, 첫 번째에서 이전으로 가면 마지막으로 돌아갑니다.enableLoop이 비활성화되면 마지막 아이템에서 정지됩니다.아이템이 하나만 있을 때 자동 재생이 비활성화됩니다.줌 또는 회전 제스처가 감지되면 자동 재생이 일시 중지됩니다. autoPlayInterval (기본값: 3000) 자동 재생 간격을 밀리초 단위로 설정합니다.양수 정수여야 합니다. 값이 250ms 미만이면 런타임에서 250ms로 제한됩니다. onSingleTap 뷰어에서 싱글 탭이 확정되면 실행됩니다. 헤더, 푸터, 캡션, 액션 버튼처럼 뷰어 컨트롤 UI를 토글할 때 유용하며, 뷰어 위에 별도의 pressable을 덮지 않아도 됩니다. 더블 탭 줌이 활성화되어 있으면 더블 탭이 아닌지 확인한 뒤 실행되므로 약간 늦게 호출될 수 있습니다스와이프, 핀치, dismiss, 더블 탭 줌 제스처에서는 호출되지 않습니다 initialIndex (기본값: 0) 초기 인덱스 값을 설정할 수 있습니다. maxZoomScale (기본값: 2) 최대 줌 배율을 제어할 수 있습니다. - [GestureViewer 상태 추적](/ko/guide/usage/gesture-viewer-state.md): GestureViewer는 뷰어의 현재 상태를 추적하는 상태 관리 시스템을 제공합니다. useGestureViewerState 훅을 사용하여 뷰어의 상태를 접근할 수 있습니다. - [뷰어 이벤트 처리하기](/ko/guide/usage/handling-viewer-events.md): useGestureViewerEvent 훅을 사용하여 GestureViewer의 특정 이벤트를 구독할 수 있습니다. 줌, 회전, 탭과 같은 뷰어 상호작용에 반응할 수 있습니다. - [다중 인스턴스 관리](/ko/guide/usage/multi-instance-management.md): 여러 개의 GestureViewer 인스턴스를 효율적으로 관리하고 싶은 경우 id 값을 적용하면 여러 개의 GestureViewer를 사용할 수 있습니다. GestureViewer는 컴포넌트가 언마운트되면 메모리에서 자동으로 인스턴스가 제거되어 메모리 관리를 수동으로 할 필요가 없습니다. - [프로그래밍 방식 제어](/ko/guide/usage/programmatic-control.md): useGestureViewerController 훅을 사용하여 GestureViewer를 프로그래밍 방식으로 제어할 수 있습니다. - [스타일 커스터마이징](/ko/guide/usage/style-customization.md): GestureViewer의 스타일을 커스터마이징할 수 있습니다. - [트리거 기반 모달 애니메이션](/ko/guide/usage/trigger-based-animations.md): GestureTrigger는 썸네일과 같은 트리거 요소에서 전체 모달 뷰로의 원활한 전환을 생성하는 부드러운 트리거 기반 애니메이션을 지원합니다. 이 기능은 트리거와 모달 콘텐츠 간의 시각적 연속성을 유지하여 사용자 경험을 향상시킵니다.