Image组件是用来加载图片的。React Native项目加载图片每每有三种方式:node
所谓加载React Native项目中的图片资源,指的是加载React Native项目中除了android、ios、node_module文件夹以外的其余文件夹中的图片资源。android
加载React Native项目中的资源图片,可使用 require 方法。实例代码如: <Image source={require('./images/apple_logo.png')}/> 。ios
React Native能够根据平台来选择不一样的图片,例如,图片文件夹下有 logo.android.png 和 logo.ios.png ,则RN会根据当前的设备是安卓机仍是苹果机来动态的加载相应设备下的图片。安全
【注意】React Native使用 require 方法加载项目图片资源的方法暂时不支持字符串拼接,即: <Image source={require('./images/' + 'apple_logo.png')}> 这种形式会报以下图所示的错误:网络
这里补充一些关于路径的问题: ./ 表示当前目录, ./../ 表示当前目录的上一级目录,依此类推。app
这里的加载APP中的图片资源,都是从打包后的APK文件中反编译出来的图片资源,对于Android项目,图片必须存在于 app/src/main/res/drawable 文件夹内;对于iOS项目,图片必须存在于 Images.xcassets 文件夹内。ui
上面说,不管Android仍是iOS,都是从打包后的APK文件中取图片的,所以,咱们在将图片放到Android或iOS的相应文件夹下后,须要先运行一遍项目,或者Build一下APK,这样才能保证项目的APK文件中打包了刚刚放进去的图片。spa
实例代码如: <Image source={{uri: 'apple_logo'} style={{width:40, height:40}}/> 。code
【注意1】这种方式获取到的图片不提供安全检查,所以咱们须要本身指定图片大小,不然图片显示不出来。blog
【注意2】使用这种方式获取图片,uri中不能指定图片后缀,即只须要指定文件名便可。
【注意3】 uri 方式支持字符串拼接,所以能够解决 require 方法不能拼接的问题,即解决方法是将图片放入APK中。
加载网络图片一样用到了 uri 的方法,实例代码如: <Image source={{uri:'http://.../apple_logo.png'}} style={{width:200, height:200}} /> 。
【注意】使用这种方法加载网络图片,一样必须指定图片的尺寸。
Image能够做为其余组件的背景图片展现,其方法是将Image嵌套在这些组件的外层,实例代码以下:
<Image source={{ uri: 'logo' }} style={{ width: 150, height: 150 }}> <Text style={{ color: 'green', fontSize: 20, backgroundColor: 'transparent' }}>我有一个背景图片!</Text> <Text style={{ color: 'green', fontSize: 20, backgroundColor: 'transparent' }}>我有一个背景图片!</Text> </Image>
resizeMode :当加载的图片的尺寸与设置的宽高不匹配时,决定怎样去加载图片,有三个可选值:cover(等比例缩放,使图片最短边占满组件)、contain(等比例缩放,使图片最长边占满组件)、stretch(拉伸铺满,可能改变图片外表比例)。
source :图片的资源,上面已经介绍,这里不加赘述。
名称 | value | 平台 |
---|---|---|
backfaceVisibility | enum(‘visible’, ‘hidden’) | iOS与Android |
backgroundColor | 颜色 | iOS与Android |
borderBottomLeftRadius | number | iOS与Android |
borderBottomRightRadius | number | iOS与Android |
borderColor | 颜色 | iOS与Android |
borderRadius | number | iOS与Android |
borderTopLeftRadius | number | iOS与Android |
borderTopRightRadius | number | iOS与Android |
borderWidth | number | iOS与Android |
opacity | enum(‘visible’, ‘hidden’) | iOS与Android |
overflow | enum(‘visible’, ‘hidden’) | iOS与Android |
tintColor | 颜色,改变全部非透明像素的颜色 | iOS与Android |
overlayColor | string类型,当图片组件有圆角,指定overlayColor将致使剩下的部分被纯净颜色填充。这个是很是有用的对于Android平台不能实现软件。利用该属性一个典型方式是显示图片背景色而后同时设置overlayColor为背景颜色 | Android |
defaultSource | 当加载图片过程当中默认显示的静态图片 | iOS |