专栏首页大宇笔记React Native组件篇(二) — Image组件

React Native组件篇(二) — Image组件

1、什么是Image组件

 这里的Image并不是iOS中的UIImage,而相当于UIImageView组件。通过这个组件可以展示各种各样的图片,而且在React Native中该组件可以通过多种方式加载图片资源。

常见有如下加载方式:

  • 从项目里加载
  • 从APP中加载
  • 加载网络图片

2、Image组件的基本用法

2.1 从当前项目中加载图片

首先先看一下图片的位置:

代码:

 render() {
    return(
        <View style={{marginTop:100}} >     
           <Image 
          source={require('./image/image1.jpg')} 
          style={{width: 120, height: 120}}  />
        </View>
      );
  }

效果:

2.2 APP项目加载资源(iOS 是放在Asset里)

还是先看下目录文件:

代码:

render() {
    return(
        <View style={{marginTop:100}} >     
           <Image 
          source={{uri:'test'}} 
          style={{width: 120, height: 120}}  />
        </View>
      );
  }

效果图:

2.3 加载来自网络的图片

代码:

render() {
    return(
        <View style={{marginTop:100,alignItems:'center'}} >     
           <Image 
          source={{uri:'https://www.baidu.com/img/bd_logo1.png'}} 
          style={{width: 120, height: 120}}  />
          
        </View>
      );
  }

效果:

3、Image组件的常见属性

3.1 属性方法
  • onLayout(function) 当Image布局发生改变的,会进行调用该方法,调用的代码为:{nativeEvent: {layout: {x, y, width, height}}}.
  • onLoad (function) 当图片加载成功之后,回调该方法
  • onLoadEnd (function) 当图片加载失败回调该方法,该不会管图片加载成功还是失败
  • onLoadStart (fcuntion) 当图片开始加载的时候调用该方法
  • resizeMode 缩放比例,可选参数('cover', 'contain', 'stretch') 该当图片的尺寸超过布局的尺寸的时候,会根据设置Mode进行缩放或者裁剪图片
  • source{uri:string} 进行标记图片的引用,该参数可以为一个网络url地址或者一个本地的路径

先说下加载Image的回调方法:

<Image 
          source={{uri:'https://www.baidu.com/img/bd_logo1.png'}} 
          style={{width: 120, height: 120}}  
          onLayout={()=>{alert('布局变化回调')}}
          onLoad={()=>{console.log('加载回调')}}
          onLoadEnd={()=>{console.log('加载结束')}}
          onLoadStart={()=>{alert('开始加载')}}
          />

console.log在控制台输出,类似OC nslog

想必大家也发现了加载网络图片的时候,图片被遮挡住了。这是因为图片大小已经超过了我们指定宽高的相框,然而相片默认属性并不是自适应。那我们应该调节resizeMode属性来达到想要的内容。

  1. cover模式只求在显示比例不失真的情况下填充整个显示区域。可以对图片进行放大或者缩小,超出显示区域的部分不显示, 也就是说,图片可能部分会显示不了。
  2. contain模式是要求显示整张图片, 可以对它进行等比缩小, 图片会显示完整,可能会露出Image控件的底色。 如果图片宽高都小于控件宽高,则不会对图片进行放大。
  3. stretch模式不考虑保持图片原来的宽,高比.填充整个Image定义的显示区域,这种模式显示的图片可能会畸形和失真。

看下contain是否能达到我们想要的效果:

3.2 样式风格属性

FlexBox 支持弹性盒子风格 Transforms 支持属性动画 backgroundColor 背景颜色 borderColor 边框颜色 borderWidth 边框宽度 borderRadius 边框圆角 overflow 设置图片尺寸超过容器可以设置显示或者隐藏('visible','hidden') tintColor 颜色设置 opacity 设置不透明度0.0(透明)-1.0(完全不透明) 代码: style={{width: 120, height: 120 ,backgroundColor:'red',borderColor:'green',borderWidth:1,borderRadius:5,tintColor:'yellow',opacity:0.2}} 效果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CVPR 18论文“无法重现”?中国作者再度澄清获网友一边倒支持

    而对于机器学习的研究来说,由于各种超参数对结果影响很大,并且论文里不太可能把所有实现的细节都说清楚,公布代码就成了保证复现的重要途径。

    新智元
  • 马斯克警告:未来数字智能必战胜生物智能,人类要想生存只有“人机合并”

    此前,他曾经在一场访谈中表示,人类极有可能生活在更高文明模拟的矩阵游戏中。近日,马斯克再次强调了他的观点:人类必须与机器结合,否则将被人工智能淘汰。

    新智元
  • 「小程序JAVA实战」小程序的事件(11)

    IT故事会
  • 你可曾想过在iOS上跑Linux?

    你可曾想过在IOS设备上运行Linux系统?或者用shell来传输文件、编写脚本,又或者使用Vi来开发代码?

    FB客服
  • 「小程序JAVA实战」 小程序抽离公用方法进行模块化(12)

    区别如果用了 ${} 最外层需要用``符号,如果你喜欢老套路可以按照我的 "Goodbye " + name + " !" 这种。

    IT故事会
  • 「小程序JAVA实战」 小程序远程调试(九)

    PS:最后想到了什么老铁,可以查看远端的代码是不是就可以获取到借鉴他的代码了。其实微信早就想到了,不是所有的都可以的。远端调试必须知道他的APPID的,不是说直...

    IT故事会
  • 关于『捷径』的这两点,90%的人都不知道,但是你一定要知道!!!

    IOS 12.0.1的通道已经关闭,已经升级的小伙伴就别想再降级了,伴随着iOS12比例的不断上升,曾经的workflow现如今的捷径,在手机中也有越来越重要。

    课代表
  • 《如何有效整理信息》- 读书笔记

    本书作者(奥野宣之)介绍了一个关于整理笔记的方法:“一元笔记法”。该方法摒弃了将笔记进行分类整理的方式,而是采用了一元化的方案:不采用分类记录的方式,而是将所有...

    用户1740424
  • 可以将 UI 设计图直接生成代码,简直太神奇了,这真的是解放了程序员生产力吗?

    作为程序员,尤其是前端和移动端的程序员,最烦气和最讨厌的一件事就是:天天重复的画界面。感觉一点水平也没有,而高质量的动态效果,设计师逼死程序员系列的 UI 效果...

    非著名程序员
  • 「小程序JAVA实战」 小程序私有页面的生命周期以及导航(10)

    PS:这块主要是对配置的生命周期的熟悉,了解下redirectTo 和 navigateTo 之前的区别。

    IT故事会

扫码关注云+社区

领取腾讯云代金券