React Native

리액트 네이티브에서 화면이 상태바 영역을 넘어가지 않게 하는 방법

Socratone 2020. 8. 15. 22:08

핸드폰에서 상태바 영역도 화면으로 취급되기 때문에

margin 값을 주지 않으면 컴포넌트가 겹치게 되어 지저분하게 보인다.

그렇다고 일정한 margin 값을 주더라도 기기마다 상태바의 높이가 다르기 때문에

올바른 해결 방법이 될 수 없다.

 

아이폰의 경우 View 대신 SafeAreaView를 쓰면 간단히 해결할 수 있다.

그러나 안드로이드는 안 먹히기 때문에 다른 방법을 찾아야 한다.

 

이를 해결하기 위해 expo-constants를 설치하자.

npm i expo-constants

 

모듈에 있는 statusBarHeight 속성을 이용하면 기기의 상태바 높이를 구할 수 있다.

 

import Constants from 'expo-constants'; // Constants로 불러온다.

 

function App() {

    return (

        <SafeAreaView style={styles.screen}>

           /* ... */

        </SafeAreaView>

    );

}

 

const styles = StyleSheet.create({

    screen: {

        paddingTop: Constants.statusBarHeight // Constants의 statusBarHeight 값을 이용한다.

    }

});