Image组件是用来加载图片的。React Native项目加载图片往往有三种方式:

  • 从React Native项目中加载图片;
  • 从APP项目中加载图片;
  • 从网络中加载图片。

Image组件加载图片

加载项目图片资源

  所谓加载React Native项目中的图片资源,指的是加载React Native项目中除了android、ios、node_module文件夹之外的其他文件夹中的图片资源。

  加载React Native项目中的资源图片,可以使用 require 方法。实例代码如: <Image source={require('./images/apple_logo.png')}/> 。

  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 文件夹内。

  上面说,无论Android还是iOS,都是从打包后的APK文件中取图片的,因此,我们在将图片放到Android或iOS的相应文件夹下后,需要先运行一遍项目,或者Build一下APK,这样才能保证项目的APK文件中打包了刚刚放进去的图片。

  实例代码如: <Image source={{uri: 'apple_logo'} style={{width:40, height:40}}/> 。

  【注意1】这种方式获取到的图片不提供安全检查,因此我们需要自己指定图片大小,否则图片显示不出来。

  【注意2】使用这种方式获取图片,uri中不能指定图片后缀,即只需要指定文件名即可。

  【注意3】 uri 方式支持字符串拼接,因此可以解决 require 方法不能拼接的问题,即解决方法是将图片放入APK中。

加载网络图片资源

  加载网络图片同样用到了 uri 的方法,实例代码如: <Image source={{uri:'http://.../apple_logo.png'}} style={{width:200, height:200}} /> 。

  【注意】使用这种方法加载网络图片,同样必须指定图片的尺寸。

Image作为其他组件的背景图片

  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>

Image的属性

resizeMode :当加载的图片的尺寸与设置的宽高不匹配时,决定怎样去加载图片,有三个可选值:cover(等比例缩放,使图片最短边占满组件)、contain(等比例缩放,使图片最长边占满组件)、stretch(拉伸铺满,可能改变图片外表比例)。

source :图片的资源,上面已经介绍,这里不加赘述。

Image的style

名称 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

最新文章

  1. svn 应该忽略的文件(visual studio)
  2. EasyUI中Grid标题居中方法(jquery实现方法)
  3. 使用xmarks同步 chrome ie firefox safari书签
  4. Altium Designer 15 --- Nets Update
  5. 加jdk语句
  6. ThinkPHP3.2.3 自定义标签库的使用
  7. 窗口 超类化 子类化 HOOK
  8. 个人常用iOS第三方库以及XCode插件介绍
  9. SVG 2D入门3 - 文本与图像
  10. 1002: A+B for Input-Output Practice (II)
  11. 【CSS】display: inline-block,内联元素
  12. viewPager的切换动画
  13. Maven “Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.4:create...”问题总结
  14. eslint常用关闭校验语句
  15. 转发:tomcat的acess_log打印post请求参数,分析日志
  16. Android View体系(五)从源码解析View的事件分发机制
  17. Java知多少(43)异常处理基础
  18. sql中,如何获取一个数的整数部分和余数部分
  19. java学习笔记16(正则表达式)
  20. Django之模型层-多表操作

热门文章

  1. python dict(字典)
  2. phpStorm //todo 的用途
  3. Java 并发编程(四):如何保证对象的线程安全性
  4. Java自动化测试框架-07 - TestNG之Factory篇 - 欢快畅游梦幻工厂(详细教程)
  5. API 网关知识看这篇就足够了!
  6. 关于Map集合注意事项
  7. 学习笔记31_ORM框架ModelFirst设计数据库
  8. nginx篇最初级用法之访问认证
  9. [考试反思]1018csp-s模拟测试79:荒谬
  10. C语言程序设计100例之(4):水仙花数