react native 퍼블리싱 기종별 동일한 비율
1294
작성한 질문수 4
안녕하세요 안드로이드 기종별로 레이아웃 비율이 일정하지가 않아서요. height: 100 그냥 숫자값으로 했다가 react-native-responsive-dimensions라이브러리를 활용해서 디바이스 크기를 기준으로 값을 계산해도 기종마다 비율이 계속 다릅니다.
픽셀밀도가 달라서 그런거라는 원인은 찾은거 같은데,,,확신은 안서고있습니다. 기기마다 동일한 디자인이 되기 위해서 스타일을 어떻게 부여해야하나요??
답변 1
0
안녕하세요, 인프런 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





