For AI agents: the complete documentation index is available at /2.x/ko/llms.txt, the full documentation bundle is available at /2.x/ko/llms-full.txt, and this page is available as Markdown at /2.x/ko/guide/usage/basic-usage.md.
v3 정식 출시. 변경 사항 보기
  • 한국어
  • 2.x
  • 기본 사용법

    GestureViewer

    import { useCallback, useState } from 'react';
    import { FlatList, Image, Modal } from 'react-native';
    import { GestureViewer } from 'react-native-gesture-image-viewer';
    
    function App() {
      const images = [...];
      const [visible, setVisible] = useState(false);
    
      const renderImage = useCallback((imageUrl: string) => {
        return <Image source={{ uri: imageUrl }} style={{ width: '100%', height: '100%' }} resizeMode="contain" />;
      }, []);
    
      return (
        <Modal visible={visible} onRequestClose={() => setVisible(false)}>
          <GestureViewer
            data={images}
            renderItem={renderImage}
            ListComponent={FlatList}
            onDismiss={() => setVisible(false)}
          />
        </Modal>
      );
    }
    Tip

    contain 콘텐츠의 정확한 범위 정확한 줌과 팬 범위가 필요하다면 getItemDimensions로 콘텐츠의 원본 크기를 전달하거나, 이미지 로드 후 setItemDimensions로 등록하세요. 자세한 내용은 콘텐츠 크기 가이드를 참고하세요.

    useGestureViewerController

    useGestureViewerController 훅을 사용하여 GestureViewer를 프로그래밍 방식으로 제어할 수 있습니다.

    import { GestureViewer, useGestureViewerController } from 'react-native-gesture-image-viewer';
    
    function App() {
      const { goToIndex, goToPrevious, goToNext, zoomIn, zoomOut, resetZoom, rotate } =
        useGestureViewerController();
    
      return (
        <View>
          <GestureViewer data={images} renderItem={renderImage} />
          {/* Navigation Controls */}
          <View>
            <Button title="Prev" onPress={goToPrevious} />
            <Button title="Jump to index 2" onPress={() => goToIndex(2)} />
            <Button title="Next" onPress={goToNext} />
          </View>
        </View>
      );
    }

    useGestureViewerState

    useGestureViewerState 훅을 사용하여 GestureViewer의 현재 상태를 가져올 수 있습니다.

    import { GestureViewer, useGestureViewerState } from 'react-native-gesture-image-viewer';
    
    function App() {
      const { currentIndex, totalCount } = useGestureViewerState();
    
      return (
        <View>
          <GestureViewer data={images} renderItem={renderImage} />
          <View>
            <Text>{`${currentIndex + 1} / ${totalCount}`}</Text>
          </View>
        </View>
      );
    }

    useGestureViewerEvent

    useGestureViewerEvent 훅을 사용하여 GestureViewer의 특정 이벤트를 구독할 수 있습니다. 줌이나 회전과 같은 실시간 제스처 변화에 반응할 수 있습니다.

    import { GestureViewer, useGestureViewerEvent } from 'react-native-gesture-image-viewer';
    
    function App() {
      useGestureViewerEvent('zoomChange', (data) => {
        console.log(`Zoom changed from ${data.previousScale} to ${data.scale}`);
      });
    
      useGestureViewerEvent('rotationChange', (data) => {
        console.log(`Rotation changed from ${data.previousRotation}° to ${data.rotation}°`);
      });
    
      useGestureViewerEvent('tap', (data) => {
        if (data.kind === 'single') {
          console.log(`Tapped item ${data.index} at (${data.x}, ${data.y})`);
        }
      });
    
      return <GestureViewer data={images} renderItem={renderImage} />;
    }

    GestureTrigger

    GestureTrigger는 썸네일과 같은 트리거 요소에서 전체 모달 뷰로의 원활한 전환을 생성하는 부드러운 트리거 기반 애니메이션을 지원합니다. 이 기능은 트리거와 모달 콘텐츠 간의 시각적 연속성을 유지하여 사용자 경험을 향상시킵니다.

    import { GestureTrigger, GestureViewer } from 'react-native-gesture-image-viewer';
    
    function App() {
      const [visible, setVisible] = useState(false);
    
      return (
        <View>
          <GestureTrigger onPress={() => setVisible(true)}>
            <Pressable>
              <Image source={{ uri }} />
            </Pressable>
          </GestureTrigger>
          <GestureViewer data={images} renderItem={renderImage} onDismiss={() => setVisible(false)} />
        </View>
      );
    }