React Native 시작 화면(11)
우선, 우리는 공식 문서의 폭과 높이 1절에서 알 수 있듯이 RN의 단위는 dp이고 이것은 안드로이드의 단위와 일치한다!홈페이지:
A dp is equal to one physical pixel on a screen with a density of 160.To calculate dp:
dp = (width in pixels * 160) / screen density
여기의 화면 밀도는 (dpi/160)와 같고 RN에서 우리는
PixelRatio
를 통해 얻을 수 있다.여기서 언급된 몇 가지 개념을 정리해 보면 무방하다.
pixelRatio
와 가깝고 약 DPI/160과 같다.PixelRatio.get()
를 통해 그래서 우리는 1dp=(1*density)px, 반대로 1px=(1/density)dp를 알 수 있다.
그렇다면 RN에 너비가 1px인 분할선을 어떻게 설정합니까?
width: 1 / PixelRatio.get()
이렇게 하면 돼!
또한, 하나의 장비의 폭과 높이를 우리는 이렇게 얻을 수 있다.
width: Dimensions.get('window').width,
height: Dimensions.get('window').height,
그럼 이게 받은 넓이가 뭘까요?우리는 아이폰6s를 출력할 수 있다. 이 값은 width:375,height:667이다. 6s의density는 2이기 때문에 우리는 이것이 얻은 폭이 dp라는 것을 안다.
적합 방안
그래서 여기 RN의 어댑터 방안은 6, 6s를 예로 들면 UI 디자인 원형: 아이폰6 해상도 기반: 1334x750px;화면 크기: 4.7인치 DPI: 326dpi(약 320dpi, density=2)
import {Dimensions} from 'react-native';
const deviceWidthDp = Dimensions.get('window').width;
const uiWidthPx = 750;
export default function px2dp(uiElementPx) {
return uiElementPx * deviceWidthDp / uiWidthPx;
}
deviceWidthDp는 현재 실행 중인 장치의 너비, uiWidthPx는 UI 설계도의 너비, uiElementPx 설계도에 표시된 요소의 px 값입니다.예를 들어, 한 장의 이미지 UI 마크업 너비가 200x400인 경우
<Image style={{width:px2dp(200),height:px2dp(400)}} source=xxx />
기타
우리는 자주 사용하는 도구류를 함께 쓸 수 있습니다:Screen Util.js
import {Dimensions, Platform, PixelRatio} from 'react-native'
export default {
width: Dimensions.get('window').width,
height: Dimensions.get('window').height,
onePixel: 1 / PixelRatio.get(),
STATUSBAR_HEIGHT: (Platform.OS === 'ios' ? 20 : 0),
APPBAR_HEIGHT: (Platform.OS === 'ios' ? 44 : 56),
}
주의해야 할 것은: 만약 이 도구 클래스와 호출자가 하나의 가방 아래에 없다면, 우리는 도구 클래스 아래에 index를 써야 한다.js를 내보내야 합니다. 그렇지 않으면 찾을 수 없습니다.
import ScreenUtil from './ScreenUtil'
...
export {ScreenUtil};
사용할 때 바로:
ScreenUtil.width
하면 돼!또 하나 질문은
STATUSBAR_HEIGHT
과APPBAR_HEIGHT
입니다.iOS 화면 좌표는 상태 표시줄을 포함하기 때문에 iOS 환경에서 구성 요소를 실행하면 상태 표시줄 아래에 그려집니다. 즉 상태 표시줄과 겹쳐집니다. 안드로이드는 그렇지 않습니다. 상태 표시줄 아래에 그려집니다.위 코드는 StackNavigator/Header에 있습니다. 특히 저희가 Header 제목 표시줄을 사용자 정의할 때
paddingTop:STATUSBAR_HEIGHT
를 설정해야 합니다. 이렇게 하면 iOS에서 상태 표시줄 아래에 그리는 문제를 피할 수 있습니다!참고 사항: React Native의 기본 단위와 레이아웃 적응 방안react-native 단위 환산(px,pt,dp,ppi) dpi,dip,해상도,화면 크기,px,density 관계 및 환산
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바삭바삭하고 간단한 결제 페이지 만들기먼저 Next.js에서 프로젝트를 만듭니다. Vercel & Next.js가 매우 편하기 때문에 최근에는이 구성을 사용하고 있습니다. 그런 다음 Tailwind CSS를 넣습니다. Tailwind CSS를 사용하면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.