Je crée une application ReactNative simple pour iOS et j'essaie d'ajouter une image d'arrière-plan. Il semble qu'il n'y ait pas de balise backgroundImage, et même si j'ai réussi à afficher l'image sur la page une fois, je ne peux pas la répéter tout au long de la page comme vous le pouvez avec CSS. Aucune suggestion?
Vous ne pouvez pas répéter l'image d'arrière-plan comme CSS dans React Native. Mais, vous pouvez y parvenir en itérant l'image comme
var React = require('react-native');
var Dimensions = require('Dimensions');
var {
Image
} = React;
var RepeatImage = React.createClass({
render: function(){
var images = [],
imgWidth = 7,
winWidth =Dimensions.get('window').width;
for(var i=0;i<Math.ceil(winWidth / imgWidth);i++){
images.Push((
<Image source={{uri: 'http://xxx.png'}} style={} />
))
}
return (
<View style={{flex:1,flexDirection:'row'}}>
{
images.map(function(img,i){
return img;
})
}
</View>
)
}
});
Les images sur iOS incluent désormais un repeat
propriété resizeMode .
Utilisez-le comme ceci:
<Image
src={/* whatever your source is */}
resizeMode="repeat"
/>
À partir de react-native 0.56 Android Les images prennent également en charge la propriété repeat
. ( https://github.com/facebook/react-native/commit/0459e4ffaadb161598ce1a5b14c08d49a9257c9c )
Sur Android la propriété repeat
ne fonctionne PAS donc: vous devrez utiliser quelque chose comme réponse de Shiraman
Il y a maintenant ce grand projet appelé react-native-bgimage (créé par Alex Melanchenko ) qui fonctionne bien:
Voici comment je l'utilise:
import RepeatingPattern from 'react-native-bgimage'; <RepeatingPattern drawable="block_pattern" style={{ height: 45, }} />
puis j'ajoute un fichier png de modèle dans Android/app/src/main/res/drawable/block_pattern.png
Je voudrais étendre la réponse de Sriraman. Pour rendre les images répétées comme arrière-plan, vous devez prendre une étape supplémentaire pour ajouter une nouvelle vue et rendre sa position absolue et l'arrière-plan transparent, puis ajouter tous les autres composants à l'intérieur de celle-ci.
var React = require('react-native');
var Dimensions = require('Dimensions');
var {
Image
} = React;
var RepeatImage = React.createClass({
render: function(){
var images = [],
imgWidth = 7,
winWidth =Dimensions.get('window').width;
for(var i=0;i<Math.ceil(winWidth / imgWidth);i++){
images.Push((
<Image source={{uri: 'http://xxx.png'}} style={} />
))
}
return (
<View style={{flex:1,flexDirection:'row'}}>
{
images.map(function(img,i){
return img;
})
}
<View style={{position: 'absolute', top: 0, bottom: 0, left: 0, right: 0}}>
{/*Place all you compoents inside this view*/}
</View>
</View>
)
}
});
Malgré le fait que cette question soit assez ancienne, je voudrais mettre mes deux sous. Elle peut également être effectuée via <ImageBackground>
composant ( référence ).
Exemple:
<ImageBackground source={require('./path/to/image.png')} style={{width: '100%', height: '100%'}} imageStyle={{resizeMode: 'repeat'}}>
// Your inside content goes here
</ImageBackground>
N'oubliez pas d'importer le composant au début du fichier, par ex. import { ImageBackground } from 'react-native';