inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

1294

Oim

작성한 질문수 4

0

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

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

react-native 스타일

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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’ 같은 라이브러리를 사용하여 해결할 수 있습니다.

도움이 되셨길 바랍니다.

createPointTransactionOfLoading 에러

0

17

1

secureTextEntry 설정에 관해

0

64

2

expo 55 tabs 사라짐 이슈

0

85

2

11강 23:35부터 막혀서 질문 드려요.

0

77

2

expo-blur 사용하면서 생긴 버그입니다.

0

119

3

router.navigate 동작이 달라졌을까요?

0

65

1

Toast 기능

0

77

2

onEndReached 함수가 바로 호출 되지 않는 이슈

1

64

1

expo push service에 관한 질문

0

80

2

백엔드도 궁금합니다!

1

89

1

ios에서 개발중이신 분들은

1

87

1

[질문아님] tabBarLabel 대신 tabBarShowLabel

1

59

1

댓글 버튼 하단에 고정되지 않는 이슈

0

54

1

SafeAreaView 적용 기준 문의

0

82

2

react-native-screens 버전 호환 문제

3

163

1

스크린 옵션 아이콘

0

56

2

강의 업데이트에 대해 문의드립니다.

0

45

1

[Note] 안드로이드 네비게이션 헤더 이슈 안내

0

67

2

안드로이드 실행 중 Drawer네비게이션과 MapView 성능 문제

0

111

2

[해결]그랩님 답변 주세요.

0

164

2

해당 강의 부분은 실제 활용하기에 부족해 제가 해결한 방법입니다.

0

99

1

ActionSheet

0

89

1

Location.getCurrentPositionAsync({}); 에러

1

129

3

소스코드가 강의 순서랑 다른가요?

0

76

2