Many of us would ask me, what’s new about the monthly version of react-native.I was also banging my head into the wall to reply them. Now I am happy to report bunch of lists. One among them is support of iPhone X.I am really fascinated to see how react-native app works on iPhone X.
Immediately I searched google to see how it works, got some component named SafeAreaView
Unfortunately I couldn’t find SafeAreaView in React-native documentation,I read some post about usage of it.Immediately I get into my code editor and check how it works.I tried importing the component like Text
import {SafeAreaView} from 'react-native';
Then I have added the component SafeAreaView as the root for all the components as below.
render() { return ( <SafeAreaView style={styles.safeArea}> <App/> </SafeAreaView> ); }
I have styled the component with flex:1 and backgroundColor. But the problem I faced is with SafeAreaView in iphone X is it has some color(given in styles) in both header as well as in the footer like below.
I don’t want footer as above. Also the safeArea and header overlap with each other. We were thinking off to get this to be resolved.
Then I tried to use normal View as root component by using the complementation of device-info library. The idea is just to style the safeArea(header) alone. So make use of padding property.
import DeviceInfo from 'react-native-device-info' .... export default class Root extends Component<{}> { render() { return ( ); } } const styles = StyleSheet.create({ safeArea: { backgroundColor: '#df6b2e', paddingTop: (DeviceInfo.getModel() == 'iPhone X') ? 30: 0, flex: 1, }, .... });
I had a discussion with my friend Prabakaran Marimuthu. He encouraged me with an idea of styling the header of each page since we are maintaining a header as a component. We need to change the style at once which will be reflected in all screens.
const styles = StyleSheet.create({ header: { flex: 0.1, backgroundColor: '#df6b2e', alignItems: 'center', flexDirection: 'row', paddingTop: (DeviceInfo.getModel() == 'iPhone X') ? 30 : 0 } ... })
This is our desired result.
This is how I made our app to support for iPhone X. Thanks everyone. Kindly visit Spritle Software website to know more.