더북(TheBook)

7.4.2 화면 크기 조회하기

화면 크기를 dp 단위로 가져오는 방법은 두 가지입니다. 첫 번째 방법은 Dimensions.get을 사용하는 것입니다.

import {Dimensions} from 'react-native';

const { width, height } = Dimensions.get('window');

Dimensions.get에는 두 가지 문자열을 넣을 수 있습니다. 'window'를 사용하면 현재 앱에서 사용할 수 있는 영역의 크기를 가져옵니다. 'screen'을 사용하면 전체 화면의 크기를 가져옵니다. iOS에서는 두 크기의 차이가 없지만, 안드로이드에서는 차이가 있습니다. 안드로이드에서 'window'로 크기를 조회했을 때는 상단의 상태 바와 하단의 소프트 메뉴 바 영역을 제외한 크기를 반환합니다.

이 방법은 컴포넌트 외부에서도 작동하므로 StyleSheet에서도 사용할 수 있습니다. 화면의 방향을 바꾸거나, 폴더블 디바이스를 사용하면 이 크기가 바뀔 수도 있습니다. 이러한 경우에는 Dimensions.addEventListenerDimensions.removeEventListener를 사용해 크기가 바뀌는 이벤트에 대비해야 합니다.

import React, {useState, useEffect} from 'react';
import {View, Dimension} from 'react-native';

function MyComponent() {
  const [dimension, setDimension] = useState(Dimensions.get('window'));
  useEffect(() => {
    const eventListener = ({window, screen}) => {
      setDimension(window);
    }
    Dimensions.addEventListener('change', eventListener);
    return () => {
        Dimensions.removeEventListener('change', eventListener);
    }
  }, []);

  (...)
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.