2015-05-16 13 views
10

Chciałbym użyć obrazu tła w mojej macierzystej aplikacji reagowania, obraz jest mniejszy niż ekran, więc muszę go rozciągnąć.Jak rozciągnąć obraz statyczny jako tło w React Native?

ale to nie działa, jeśli obraz jest ładowane z wiązki aktywów

var styles = StyleSheet.create({ 
    bgImage: { 
    flex: 1, 
    flexDirection: 'row', 
    justifyContent: 'center', 
    alignItems: 'stretch', 
    resizeMode: 'stretch', 
    }, 
    welcome: { 
    fontSize: 20, 
    textAlign: 'center', 
    margin: 10, 
    } 
}); 

<Image source={require('image!background')} style={styles.bgImage}> 
    <Text style={styles.welcome}> 
    Welcome to React Native! 
    </Text> 
</Image> 

wygląda to tak:

enter image description here

jednak to działa dobrze na zdalnym obrazie , przez source={{uri: 'background-image-uri'}}:

enter image description here

+0

Spróbuj 'resizeMode: 'cover''? zobacz: [http://stackoverflow.com/questions/29322973/whats-the-best-way-to-add-a-full-screen-background-image-in-react-native](http://stackoverflow .pl/questions/29322973/whats-the-best-way-to-add-a-full-screen-background-image-in-react-native) – ddaaggeett

Odpowiedz

8

Znacznik obrazu zazwyczaj nie powinien być traktowany jako widok kontenera.

Mając pozycjonowany bezwzględnie opakowania zawierającego swoją (rozciągnięta/zawartego) obraz wydaje się działać dobrze:

var styles = StyleSheet.create({ 
    bgImageWrapper: { 
     position: 'absolute', 
     top: 0, bottom: 0, left: 0, right: 0 
    }, 
    bgImage: { 
     flex: 1, 
     resizeMode: "stretch" 
    }, 
    welcome: { 
     fontSize: 20, 
     textAlign: 'center', 
     margin: 10 
    } 
}); 



<View style={{ flex: 1 }}> 
    <View style={styles.bgImageWrapper}> 
    <Image source={require('image!background')} style={styles.bgImage} /> 
    </View> 
    <Text style={styles.welcome}> 
    Welcome to React Native! 
    </Text> 
</View> 
+5

Niestety, to nie działa dla mnie. I dlaczego 'Obraz' nie powinien być traktowany jako pojemnik, podczas gdy oficjalny dokument sugeruje [Obraz tła poprzez zagnieżdżanie] (https://facebook.gitub.io/react-native/docs/image.html#background-image-via -zagnieżdżanie)? – xinthink

2

Zawsze można użyć modułu Dimensions uzyskać szerokość ekranu i ustawić szerokość stylu twojego obrazka do że wartość:

var Dimensions = require('Dimensions'); 
var {width, height} = Dimensions.get('window'); 

wydaje się też dziwne, że zdalny obraz działa dobrze ... można spróbować ładuje się lokalny statyczny obraz z uri Synt topór przy użyciu source={{uri: 'local_image_file_name' isStatic: true}}.

+1

Dzięki @dave, myślę, że [oficjalny dokument] (https://facebook.gitub.io/react-native/docs/image.html#why-not-automatically-size- everything) wyjaśnia to, 'require (' image! x ') 'powoduje, że obiekt ma ustaloną szerokość i wysokość (rozmiar obrazu):' {"__packager_asset": true, "isStatic": true, "path": "...", "uri": "logo", "szerokość": 591, "wysokość": 573} ". Wypróbuję formularz "uri" i dam znać wynik, thx! – xinthink