React Native의 화면 너비


105

React Native에서 화면 너비를 어떻게 얻습니까?

(겹치는 절대 구성 요소를 사용하고 화면에서의 위치가 다른 장치로 변경되기 때문에 필요합니다)

답변:


171

React-Native에는 Dimensions라는 옵션이 있습니다.

이미지, 텍스트 및 기타 구성 요소를 포함하는 상단 변수에 치수를 포함하십시오.

그런 다음 스타일 시트에서 아래와 같이 사용할 수 있습니다.

ex: {
width: Dimensions.get('window').width,
height: Dimensions.get('window').height
}

이 방법으로 장치 창과 높이를 얻을 수 있습니다.


두 구성 요소 너비의 합계를 다음과 같게 만들고 싶다면 어떻게 사용할 수 Dimensions.get('window').width있습니까?
Andy95

이 값을 전역 적으로 저장하고 장치를 회전 할 때 안전하지 않은 곳에서 사용하십시오. 함수 구성 요소에서 반응 후크 를 사용하는 것이 좋습니다
MJ Studio

77

이 코드를 선언하면 장치 너비를 얻을 수 있습니다.

let deviceWidth = Dimensions.get('window').width

분명하지만 Dimensions는 반응 네이티브 가져 오기입니다.

import { Dimensions } from 'react-native'

그것 없이는 치수가 작동하지 않습니다.


10
감사합니다! 스택 오버플로에있는 사람들은 수입품이 너무 자주 오는 곳을 제외합니다. 그것을 포함 해주셔서 감사합니다. 공식 문서에는 없습니다.
Jack Davidson

23

컴포넌트에서 요구할 수있는 스타일 컴포넌트가있는 경우 파일 상단에 다음과 같은 내용이있을 수 있습니다.

const Dimensions = require('Dimensions');

const window = Dimensions.get('window');

그런 다음 fulscreen: {width: window.width, height: window.height},Style 구성 요소를 제공 할 수 있습니다 . 도움이 되었기를 바랍니다


18

React Native Dimensions는이 질문에 대한 부분적인 대답 일뿐입니다. 저는 여기에 화면의 실제 픽셀 크기를 찾아 왔으며 Dimensions는 실제로 밀도에 독립적 인 레이아웃 크기를 제공합니다.

React Native Pixel Ratio를 사용하여 화면의 실제 픽셀 크기를 얻을 수 있습니다.

Dimenions 및 PixelRatio 모두에 대한 import 문이 필요합니다.

import { Dimensions, PixelRatio } from 'react-native';

객체 디스트 럭처링을 사용하여 너비 및 높이 전역을 만들거나 다른 사람이 제안한대로 스타일 시트에 넣을 수 있지만 장치 방향이 변경되면 업데이트되지 않습니다.

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

React Native Dimension 문서에서 :

참고 : 치수는 즉시 사용할 수 있지만 (예 :> 장치 회전으로 인해) 변경 될 수 있으므로 이러한 상수에 의존하는 모든 렌더링 논리 또는 스타일은> 값을 캐시하는 대신> (예를 들어 , StyleSheet에서 값을 설정하는 대신 인라인 스타일 사용).

PixelRatio 문서 링크는 호기심이 많지만 그 이상은 아닙니다.

실제로 화면 크기를 얻으려면 다음을 사용하십시오.

PixelRatio.getPixelSizeForLayoutSize(width);

또는 너비와 높이를 전역으로 사용하지 않으려면 다음과 같이 어디에서나 사용할 수 있습니다.

PixelRatio.getPixelSizeForLayoutSize(Dimensions.get('window').width);

10

React Native는 'react-native'에서 가져와야하는 "Dimensions"API와 함께 제공됩니다.

import { Dimensions } from 'react-native';

그때,

<Image source={pic} style={{width: Dimensions.get('window').width, height: Dimensions.get('window').height}}></Image>

8

2020 년 4 월 10 일 답변 :

를 사용하여 제안 된 답변 Dimensions은 이제 권장되지 않습니다. 참조 : https://reactnative.dev/docs/dimensions

권장되는 접근 방식은 useWindowDimensionsReact 에서 후크를 사용하는 것입니다 . https://reactnative.dev/docs/usewindowdimensions 는 후크 기반 API를 사용하며 화면 값이 변경 될 때 값을 업데이트합니다 (예 : 화면 회전).

import {useWindowDimensions} from 'react-native';

const windowWidth = useWindowDimensions().width;
const windowHeight = useWindowDimensions().height;

참고 : useWindowDimensionsReact Native 0.61.0에서만 사용 가능 : https://reactnative.dev/blog/2019/09/18/version-0.61


3

두 단계 만 거치면됩니다.

  1. import { Dimensions } from 'react-native' 파일 맨 위에.
  2. const { height } = Dimensions.get('window');

이제 창 화면 높이가 height 변수에 저장됩니다.


1
왜 같은 답변을했는지 모르겠습니까? 이것이 실제로 무엇을 추가합니까?
Rambatino

2

방금 react-native-responsive-screen 여기서 repo를 발견 했습니다 . 매우 편리합니다.

react-native-responsive-screen은 React Native 개발자가 완전히 반응하는 UI 요소를 코딩 할 수 있도록 두 가지 간단한 메서드를 제공하는 작은 라이브러리입니다. 미디어 쿼리가 필요하지 않습니다.

또한 새로운 차원에 따라 화면 방향 감지 및 자동 다시 렌더링을위한 선택적 세 번째 방법을 제공합니다.


0

사용 react-native-responsive-dimensions하는 것이 귀하의 경우에 조금 더 도움이 될 것이라고 생각 합니다.

여전히 다음을 얻을 수 있습니다.

및 사용하여 장치 너비 responsiveScreenWidth(100)

and를 사용하여 장치 높이 responsiveScreenHeight(100)

또한 너비와 높이의 100 % 이상 비율로 여백과 위치 값을 설정하여 절대 구성 요소의 위치를보다 쉽게 ​​정렬 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.