36 votes

Comment utiliser ImageBackground pour définir l'image d'arrière-plan de l'écran en react-native ?

Lorsque je l'utilise dans react-native, il donne un avertissement que l'utilisation avec les enfants est dépréciée et sera une erreur à l'avenir. Utilisateur plutôt.

Donc, Si je l'utilise, il ne donne pas le résultat attendu que j'obtenais en utilisant

Voici le code que j'ai écrit pour utiliser

<ImageBackground source={require('../../img/splash/splash_bg.png')} style={styles.backgroundImage} >
        </ImageBackground>

Et le code de style est

const styles = StyleSheet.create({
backgroundImage: {
    flex: 1,
    // width: undefined,
    // height: undefined,
    // flexDirection: 'column',
    // backgroundColor:'transparent',
    // justifyContent: 'flex-start',

},}

Expected result: getting when using <Image> Result using <ImageBackground>

1 votes

Par github.com/facebook/react-native/blob/ Dans ce cas, ImageBackground accepte deux props de style - style et imageStyle - qui sont (évidemment) appliqués respectivement à la vue interne et à l'image. Il convient également de noter que les valeurs de hauteur et de poids du style du conteneur sont automatiquement appliquées au style de l'image.

0 votes

J'ai essayé d'utiliser uniquement <ImageBackground> sans aucun parent ou enfant mais je n'ai toujours pas pu obtenir le résultat attendu.

66voto

Tiago Gouvêa Points 498

Vous pouvez utiliser "ImageBackground" sur React Native.

<ImageBackground
  source={yourSourceFile}
  style={{width: '100%', height: '100%'}}
> 
    <....yourContent...>
</ImageBackground>

13 votes

Je ne sais pas si c'est bizarre ou non, mais je n'obtiendrais une erreur que si je ne spécifiais pas les attributs 'width' et 'height', et je n'ai pas vu cela documenté nulle part. Votre réponse m'a permis de trouver ce qui n'allait pas :D

19voto

BLDD Points 169

J'ai atteint cet objectif en

import { ImageBackground } from 'react-native';

<ImageBackground style={ styles.imgBackground } 
                 resizeMode='cover' 
                 source={require('./Your/Path.png')}>

   //place your now nested component JSX code here

</ImageBackground>

Et puis les Styles :

imgBackground: {
        width: '100%',
        height: '100%',
        flex: 1 
},

1 votes

Import { ImageBackground ] de 'react-native' ; il faut remplacer ] par }, non ?

4voto

Alexander Vitanov Points 2590

Deux options :

  1. Essayez de régler la largeur et la hauteur sur la largeur et la hauteur de l'écran de l'appareil.
  2. Bonne vieille position absolue

Code pour #2 :

 render(){
    return(
        <View style={{ flex: 1 }}>
           <Image style={{ width: screenWidth, height: screenHeight, position: 'absolute', top: 0, left: 0 }}/>
           <Text>Hey look, image background</Text>
        </View>
    )
}

Modifier : Pour l'option #2, vous pouvez expérimenter avec resizeMode="stretch|cover"

Edit 2 : Gardez à l'esprit que l'option #2 rend l'image et ensuite tout ce qui suit dans cet ordre, ce qui signifie que certains pixels sont rendus deux fois, cela pourrait avoir un très petit impact sur les performances (généralement imperceptible) mais juste pour votre information.

2voto

chansuke Points 148

ImageBackground est un composant très simple et très utile, que vous placerez à l'intérieur de l'application ImageBackground en tant que composant imbriqué et modifiez la position de votre composant à l'aide de la fonction position .

Voici un exemple.

<ImageBackground
  source={{ uri: hoge }}
  style={{
    height: 100,
    width: 100,
    position: 'relative', 
    top: 0,
    left: 0
  }}
>
  <Text
    style={{
      fontWeight: 'bold',
      color: 'white',
      position: 'absolute', 
      bottom: 0, 
      left: 0
    }}
  >
    Hello World
  </Text>
</ImageBackground>

1voto

Ajith V M Points 11
     <ImageBackground
            source={require("../assests/background_image.jpg")}
            style={styles.container}

        >
            <View
                style={{
                    flex: 1,
                    justifyContent: "center",
                    alignItems: "center"
                }}
            >
                <Button
                    onPress={() => this.props.showImagePickerComponent(this.props.navigation)}
                    title="START"
                    color="#841584"
                    accessibilityLabel="Increase Count"
                />
            </View>
        </ImageBackground>

Veuillez utiliser ce code pour définir l'image de fond dans react native.

1 votes

Conteneur : { flex : 1, //justifyContent : "center", //alignItems : "center", backgroundColor : "#F5FCFF" },

0 votes

Bien que cette réponse soit probablement correcte et utile, il est préférable de l'accompagner d'une explication expliquant comment elle contribue à résoudre le problème. Cela s'avérera particulièrement utile à l'avenir, si un changement (peut-être sans rapport) entraîne l'arrêt du fonctionnement et que les utilisateurs ont besoin de comprendre comment il fonctionnait auparavant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X