728x90
728x90
Dimensions API
들어가며
- 리액트 네이티브(React Native)의 내장 API 중 하나인 Dimensions API에 대해 간단히 정리해본다
- Dimensions API를 이용하여 현재 디바이스의 화면 정보를 가져올 수 있다.

Dimensions API
개념
- 리액트 네이티브(React Native)에서 기본으로 제공하는 내장 API
- 디바이스의 화면 크기(너비(Width)와 높이(Height)) 정보를 가져오는 데 사용된다.
- 반응형 UI 구성에 활용할 수 있다.
- 이러한 정보를 이용하여 폰트 크기(Font Size), 패딩(Padding), 마진(Margin) 등을 디바이스 화면 크기에 따라 조정할 수 있다.
사용하면 좋은 경우
- 다양한 화면 크기에 맞춰 폰트, 간격, 크기를 조절할 때
- 미디어 쿼리(Media Query)처럼 반응형 디자인을 구현할 때
- 특정 해상도 이하에서만 UI를 간소화하거나 조정하고 싶을 때
사용 방법
모듈 불러오기
import { Dimensions } from 'react-native';
화면 정보 가져오기
// 상태바(Status Bar)를 제외한 부분 const windowWidth = Dimensions.get('window').width; const windowHeight = Dimensions.get('window').height; // 상태바(Status Bar)를 포함한 부분 const screenWidth = Dimensions.get('screen').width; const screenHeight = Dimensions.get('screen').height;
Dimensions.get()
메서드는window
또는screen
을 인자로 받는다.
인자 | 설명 |
window |
상태바(Status Bar)를 제외한 실제 UI가 그려지는 화면 크기 (일반적으로 사용) |
screen |
상태바(Status Bar)를 포함한 전체 화면 크기 |
Dimensions.get()
메서드는 다음의 정보를 포함한 객체(Object)를 반환한다.
{ width: number, height: number, scale: number, fontScale: number }
값 | 설명 |
width |
픽셀 단위의 화면 너비 |
height |
픽셀 단위의 화면 높이 |
scale |
픽셀 밀도 (디바이스의 해상도 스케일, DPI) |
fontScale |
사용자 설정에 따른 폰트 스케일링 비율 |
화면 회전에 대응하기
방법 ① : Dimensions API와 이벤트 리스너(Event Listener) 함께 사용하기
- Dimensions API는 기본적으로 앱이 실행될 때의 크기만 가져온다.
- 앱 시작 시
Dimensions.get()
을 호출해 가져온 값은 정적(Static)이다.
- 앱 시작 시
- 화면 회전 등으로 크기가 바뀌어도 자동 갱신 되지 않기 때문에 이벤트 리스너(Event Listener)를 통해 수동으로 감지하도록 하게 한다.
useEffect(() => { const onChange = ({ window }) => { console.log('width:', window.width); }; const subscription = Dimensions.addEventListener('change', onChange); return () => subscription?.remove(); }, []);
React Native 0.65부터는addEventListener
와removeEventListener
대신, 구독 객체를 반환하고remove()
로 이벤트 리스너를 해제하는 방식을 사용한다.
방법 ② : useWindowDimensions 훅 사용하기
- 리액트 네이티브의 기본 내장 훅인
useWindowDimensions
훅을 사용하여 현재 화면의width
와height
값을 실시간으로 가져올 수 있다.
import { useWindowDimensions } from 'react-native'; const MyComponent = () => { const { width, height } = useWindowDimensions(); return ( <View> <Text>현재 너비: {width}</Text> <Text>현재 높이: {height}</Text> </View> ); };
useWindowDimensions
훅 또한 다음 값을 가진 객체(Object)를 반환한다.
{ width: number, // 현재 화면의 너비 (px) height: number, // 현재 화면의 높이 (px) scale: number, // 디바이스의 픽셀 비율 (DPI 비율) fontScale: number // 폰트 스케일 비율 }
예제 코드
const { width } = Dimensions.get('window'); // 또는 const windowWidth = Dimensions.get('window').width; const styles = StyleSheet.create({ container: { padding: width < 380 ? 12 : 24, fontSize: width < 380 ? 28 : 36, } });
참고 사이트
Dimensions · React Native
useWindowDimensions is the preferred API for React components. Unlike Dimensions, it updates as the window's dimensions update. This works nicely with the React paradigm.
reactnative.dev
useWindowDimensions · React Native
useWindowDimensions automatically updates all of its values when screen size or font scale changes. You can get your application window's width and height like so:
reactnative.dev
728x90
728x90
'Programming > React Native' 카테고리의 다른 글
[React Native] Platform API (0) | 2025.04.11 |
---|---|
[React Native] ScrollView (0) | 2025.04.11 |
[React Native] KeyboardAvoidingView (0) | 2025.04.10 |
[React Native] 에뮬레이터 디바이스 자동 회전 기능 켜는 방법 (Expo) (0) | 2025.04.10 |
[React Native] 플랫폼 별로 요소에 그림자 효과 넣기 (Android, iOS, Web) (0) | 2025.04.06 |
[React Native] 아이콘 사용하기 (@expo/vector-icons) (0) | 2025.04.06 |
[React Native] 커스텀 폰트 사용하기 (expo-font) (0) | 2025.04.06 |
[React Native] SafeAreaView (0) | 2025.04.03 |