Ответ 1
Вы можете использовать компонент ImageBackground в React Native.
<ImageBackground
source={yourSourceFile}
style={{width: '100%', height: '100%'}}
>
<....yourContent...>
</ImageBackground>
Когда я использую in response-native, он предупреждает, что использование с детьми устарело и будет ошибкой в будущем. Пользователь вместо этого.
Итак, Если я использую его, он не дает ожидаемого результата, который я получал с помощью
Вот код, который я написал для использования
<ImageBackground source={require('../../img/splash/splash_bg.png')} style={styles.backgroundImage} >
</ImageBackground>
И код стиля
const styles = StyleSheet.create({
backgroundImage: {
flex: 1,
// width: undefined,
// height: undefined,
// flexDirection: 'column',
// backgroundColor:'transparent',
// justifyContent: 'flex-start',
},}
Любая помощь будет высоко оценена. Благодаря
Вы можете использовать компонент ImageBackground в React Native.
<ImageBackground
source={yourSourceFile}
style={{width: '100%', height: '100%'}}
>
<....yourContent...>
</ImageBackground>
я достиг этого:
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>
И тогда стили:
imgBackground: {
width: '100%',
height: '100%',
flex: 1
},
Два варианта:
Код для # 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>
)
}
Edit:
Для опции №2 вы можете поэкспериментировать с resizeMode="stretch|cover"
Изменить 2: Имейте в виду, что опция № 2 отображает изображение, а затем все после этого в этом порядке, а это означает, что некоторые пиксели отображаются дважды, это может иметь очень небольшое влияние на производительность (обычно незаметное), но только для вашей информации
<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>
Используйте этот код для установки фонового изображения в
ImageBackground - очень простой и полезный компонент. Поместите свой компонент внутри ImageBackground
в виде вложенного компонента и настройте позицию своего компонента, используя position
.
Вот пример.
<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>
Вот ссылка на документы RN: https://facebook.github.io/react-native/docs/images
Общий запрос функций от разработчиков, знакомых с Интернетом, - фоновое изображение. Чтобы обработать этот вариант использования, вы можете использовать компонент
<ImageBackground>
, который имеет те же реквизиты, что и<Image>
, и добавлять к нему все дочерние элементы, которые вы хотели бы сложить поверх него.
Возможно, вы не захотите использовать <ImageBackground>
в некоторых случаях, так как реализация очень проста. Для получения дополнительной информации обратитесь к исходному коду <ImageBackground>
и при необходимости создайте свой собственный компонент.
return (
<ImageBackground source={require('./image.png')} style={{width: '100%', height: '100%'}}>
<Text>Inside</Text>
</ImageBackground>
);
Обратите внимание, что вы должны указать атрибуты стиля ширины и высоты.
Также обратите внимание, что путь к файлу относится к каталогу, в котором находится компонент.
const { width, height } = Dimensions.get('window')
<View style={{marginBottom: 20}}>
<Image
style={{ height: 200, width: width, position: 'absolute', resizeMode: 'cover' }}
source={{ uri: 'https://picsum.photos/'+width+'/200/?random' }}
/>
<View style={styles.productBar}>
<View style={styles.productElement}>
<Image
style={{ height: 160, width: width - 250, position: 'relative', resizeMode: 'cover' }}
source={{ uri: 'https://picsum.photos/'+ 250 +'/160/?random' }}
/>
</View>
<View style={styles.productElement}>
<Text style={{ fontSize: 16, paddingLeft: 20 }}>Başlık</Text>
<Text style={{ fontSize: 12, paddingLeft: 20, color: "blue"}}>Alt Başlık</Text>
</View>
</View>
</View>
productBar: {
margin: 20,
marginBottom: 0,
justifyContent: "flex-start" ,
flexDirection: "row"
},
productElement: {
marginBottom: 0,
},
Я думаю, что это поможет вам..
import React, { Component } from 'react';
import { homePageStyles } from '../styles/Style';
import { Text, ImageBackground } from 'react-native';
import HomePageWallpaper from '../images/homePageWallpaper.jpg';
export default class Home extends Component {
render() {
return (
<ImageBackground source={HomePageWallpaper} style={{ flex: 1, justifyContent: 'center', width: null, height: null }}>
<Container>
<Content>
<Text style={homePageStyles.description_text}>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</Text>
</Content>
</Container >
</ImageBackground>
);
}
}
Я столкнулся с такой же проблемой с фоновым изображением и его дочерними компонентами, включая изображения логотипов. Потеряв несколько часов, я нашел правильный способ решить эту проблему. Это, безусловно, помогло вам.
var {View, Text, Image, ImageBackground} = require('react-native');
import Images from '@assets';
export default class Welcome extends Component {
render() {
return (
<ImageBackground source={Images.main_bg} style={styles.container}>
<View style={styles.markWrap}>
<Image source={Images.main_logo}
style={styles.mark} resizeMode="contain" />
</View>
<View style={[styles.wrapper]}>
{//Here put your other components}
</View>
</ImageBackground>
);
}
}
var styles = StyleSheet.create({
container:{
flex: 1,
},
markWrap: {
flex: 1,
marginTop: 83,
borderWidth:1, borderColor: "green"
},
mark: {
width: null,
height: null,
flex: 1,
},
wrapper:{
borderWidth:1, borderColor: "green",///for debug
flex: 1,
position:"relative",
},
}
Логотип на фоновом изображении
(PS: На этот экран я вместо этого изображаю фиктивный образ на этом экране.)
const img = '../../img/splash/splash_bg.png';
<ImageBackground source={{ uri: img }} style={styles.backgroundImage} >
</ImageBackground>
Это сработало для меня. Ссылку на документы RN можно найти здесь. Я написал мою, прочитав this- https://facebook.github.io/react-native/docs/images.html#background-image-via-nesting
Чтобы добавить фоновое изображение, React Native основан на компоненте, компоненту ImageBackground требуется два стиля реквизита = {{}} и source = {require ('')}
<ImageBackground source={require('./wallpaper.jpg')} style={{width: '100%', height: '100%'}}>
<....yourContent Goes here...>
</ImageBackground>
.hero-image {
background-image: url("photographer.jpg"); /* The image used */
background-color: #cccccc; /* Used if the image is unavailable */
height: 500px; /* You must set a specified height */
background-position: center; /* Center the image */
background-repeat: no-repeat; /* Do not repeat the image */
background-size: cover; /* Resize the background image to cover the entire container */
}