2015-05-16 64 views
10

Tôi muốn sử dụng hình nền trong ứng dụng gốc phản ứng của mình, hình ảnh nhỏ hơn màn hình, vì vậy tôi phải kéo dài nó.Làm cách nào để kéo dài một hình ảnh tĩnh làm nền trong React Native?

nhưng nó không hoạt động nếu hình ảnh là nạp từ bó tài sản

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> 

nó trông như thế này:

enter image description here

tuy nhiên, nó hoạt động tốt cho hình ảnh từ xa , thông qua source={{uri: 'background-image-uri'}}:

enter image description here

+0

Thử 'resizeMode: 'cover''? tham khảo: [http://stackoverflow.com/questions/29322973/whats-the-best-way-to-add-a-full-screen-background-image-in-react-native](http://stackoverflow .com/questions/29322973/whats-the-best-way-to-add-a-full-screen-background-hình-trong-phản ứng-bản địa) – ddaaggeett

Trả lời

18

Từ vấn đề Github: Image {require} is broken in React Native for Resizing, bạn có thể thử <Image style={{width: null, height: null}}, hy vọng rằng facebook sẽ sớm khắc phục được sự cố đó.

+2

đặt chiều rộng và chiều cao làm việc cho tôi ... nền: { flex: 1, chiều rộng: null, chiều cao: null, thay đổi kích thướcMã: 'stretch' }, – pkbyron

8

Thẻ Hình ảnh thường không được coi là chế độ xem vùng chứa.

Có một wrapper hoàn toàn vị trí chứa (kéo dài/chứa) hình ảnh của bạn xuất hiện để làm việc tốt:

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

Thật không may, nó không làm việc cho tôi. Và tại sao 'Hình ảnh' không được coi là vùng chứa, trong khi tài liệu chính thức đề xuất [Hình nền qua Nesting] (https://facebook.github.io/react-native/docs/image.html#background-image-via -nesting)? – xinthink

2

Bạn luôn có thể sử dụng các mô-đun Dimensions để có được chiều rộng của màn hình và thiết lập phong cách chiều rộng của hình ảnh của bạn để giá trị:

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

Nó cũng có vẻ lạ mà hình ảnh từ xa hoạt động tốt ... bạn có thể thử tải lên một hình ảnh tĩnh địa phương với uri SYNT rìu bằng cách sử dụng source={{uri: 'local_image_file_name' isStatic: true}}.

+1

Cảm ơn @dave, tôi nghĩ rằng [tài liệu chính thức] (https://facebook.github.io/react-native/docs/image.html#why-not-automatically-size-everything) giải thích nó, 'require (' image! x ') 'kết quả trong một đối tượng có chiều rộng và chiều cao cố định (kích thước của hình ảnh):' {"__packager_asset": true, "isStatic": true, "đường dẫn": "...", "uri": "biểu trưng", "chiều rộng": 591, "chiều cao": 573} '. Tôi sẽ thử mẫu 'uri' và cho bạn biết kết quả, thx! – xinthink

Các vấn đề liên quan