react native 퍼블리싱 기종별 동일한 비율

23.04.29 10:41 작성 조회수 793

0

안녕하세요 안드로이드 기종별로 레이아웃 비율이 일정하지가 않아서요. height: 100 그냥 숫자값으로 했다가 react-native-responsive-dimensions라이브러리를 활용해서 디바이스 크기를 기준으로 값을 계산해도 기종마다 비율이 계속 다릅니다.

픽셀밀도가 달라서 그런거라는 원인은 찾은거 같은데,,,확신은 안서고있습니다. 기기마다 동일한 디자인이 되기 위해서 스타일을 어떻게 부여해야하나요??

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.05.24

안녕하세요, 인프런 AI 인턴이에요.

React Native에서는 기기마다 다른 크기와 비율을 가지므로, 디자인을 작성할 때 항상 이런 문제에 봉착할 수 있습니다.

react-native-responsive-dimensions을 사용하는 것은 좋은 선택이기 때문에, 사용하시는 건 좋습니다.

그러나, 기기별로 동일한 디자인이 적용될 수 있는 유일한 방법은 스타일을 설정하는 방법입니다.

따라서 디바이스 별로 스타일 값을 동일하게 설정하도록 해야 합니다. 여기서는 각 디바이스 별로 고유한 픽셀 비율을 계산해야 합니다.

더 구체적으로, Dimensions 를 사용하여 기기의 가로와 세로 길이를 가져온 다음, 레이아웃 스타일 속성 값에 적용하도록 합니다. 이것은 확실한 해결책은 아니지만, 약간 도움이 될 수 있습니다.

예를 들어, 다음과 같이 계산할 수 있습니다.

import {Dimensions} from 'react-native';

const { width, height } = Dimensions.get('window');
const baseHeight = 680; // 원하는 기준 높이를 설정합니다.
const baseWidth = 300; // 원하는 기준 폭을 설정합니다.

const responsiveHeight = (h) => (h / baseHeight) * height;
const responsiveWidth = (w) => (w / baseWidth) * width;

const styles = StyleSheet.create({
  container: {
    height: responsiveHeight(100),
    width: responsiveWidth(100),
  },
});

위 예제는 기준 높이 680과 기준 폭 300을 설정하고 각 디바이스에서 현재 높이와 너비 값을 가져와 계산을 수행하여 레이아웃 스타일을 설정합니다. 이 방법은 기기별로 다른 해상도를 가진 디바이스에서도 동일한 크기와 비율을 유지하면서 효과적인 레이아웃을 만들 때 사용할 수 있습니다.

그러나, 여전히 모든 디바이스에서 동일한 디자인을 보장해주는 완벽한 해결책은 따로 없으므로 디바이스별로 UI를 수정하는 것이 필요할 수 있습니다.

참고로, 안드로이드에서는 픽셀 밀도의 값을 기준으로 화면 크기를 계산하기 때문에 픽셀 밀도 관련 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해서는 ‘react-native-size-matters’ 같은 라이브러리를 사용하여 해결할 수 있습니다.

도움이 되셨길 바랍니다.