Comment empêcher la mise en page de chevauchement avec iOS barre d'état
Je suis en train de travailler sur tutoriel pour Réagir Natif de navigation. J'ai découvert que toute la présentation commence à charger à partir du haut de l'écran plutôt qu'au-dessous de la barre d'état. Ainsi, la plupart des mises en page de chevauchement avec la barre d'état. Je peux résoudre ce problème en ajoutant un padding à la vue lors de leur chargement. Est-ce la façon de le faire? Je ne pense que l'ajout manuel d'un rembourrage est en fait un moyen de les résoudre. Est-il une façon plus élégante de résoudre ce problème?
import React, { Component } from 'react';
import { View, Text, Navigator } from 'react-native';
export default class MyScene extends Component {
static get defaultProps() {
return {
title : 'MyScene'
};
}
render() {
return (
<View style={{padding: 20}}> //padding to prevent overlap
<Text>Hi! My name is {this.props.title}.</Text>
</View>
)
}
}
Ci-dessous montre les captures d'écran avant et après le remplissage est ajouté.
- Bonne question, mais vous pourriez peut-être réduire les images.
- stackoverflow.com/a/39300715/1540350 <- cette réponse ne sera pas seulement de résoudre le problème évoqué ici, mais même vous donner la possibilité de la couleur de l'arrière-plan de la barre d'état sous iOS et Android.
Vous devez vous connecter pour publier un commentaire.
Il y a un moyen très simple de résoudre ce problème. Faites un composant.
Vous pouvez créer une Barre de composant et de l'appeler en premier après le premier point de vue wrapper dans votre parent composants.
Voici le code pour celui que j'utilise:
Après avoir fait cela, et de l'exporter vers votre composant principal, l'appeler comme ceci:
MidnightBlue
est pas valide, dit par Réagir Natif: Avertissement: Échec de la prop type: Invalid propbackgroundColor
fournimidnightblue
.height: (Platform.OS === 'ios') ? 20 : StatusBar.currentHeight,
au lieu de? 20 : 0,
vous obtenez le même résultat sur Android.Maintenant, vous pouvez utiliser
SafeAreaView
qui est inclus dans Réagissent de Navigation:react-navigation
maintenant par défaut.@philipheinser solution ne fonctionne en effet.
Toutefois, je m'attends à ce que Réagir originaire de La barre d'état composante à gérer pour nous.
Il n'a pas, malheureusement, mais nous pouvons abstrait que l'écart assez facilement en créant notre propre composant autour d'elle:
./StatusBar.js
./index.js
Avant:
Après:
J'ai essayé un moyen plus simple pour cela.
Nous pouvons obtenir la hauteur de la Barre d'État sur android et utiliser SafeAreaView le long avec le code fonctionne sur les deux plates-formes.
Si nous déconnecter
Platform.OS
etStatusBar.currentHeight
nous obtenir les journaux,Hauteur sur: android 24 et
Hauteur: android 24
Nous pouvons maintenant vous pouvez ajouter margin/padding à notre conteneur de vue à l'aide de
La version finale du code de App.js est ci-dessous:
Ici est une manière qui fonctionne pour iOS:
Vous pouvez gérer cela en ajoutant un padding à votre barre de navigation composant ou tout simplement ad un point de vue qui a la même hauteur de la barre d'état en haut de votre point de vue sur l'arbre avec un backgroundcolor comme le facebook app ne ce.