前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React Native组件篇(二) — Image组件

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

作者头像
星宇大前端
发布2019-01-15 14:53:13
7700
发布2019-01-15 14:53:13
举报
文章被收录于专栏:大宇笔记

1、什么是Image组件

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

常见有如下加载方式:

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

2、Image组件的基本用法

2.1 从当前项目中加载图片

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

代码:

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

效果:

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

还是先看下目录文件:

代码:

代码语言:javascript
复制
render() {
    return(
        <View style={{marginTop:100}} >     
           <Image 
          source={{uri:'test'}} 
          style={{width: 120, height: 120}}  />
        </View>
      );
  }

效果图:

2.3 加载来自网络的图片

代码:

代码语言:javascript
复制
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的回调方法:

代码语言:javascript
复制
<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}} 效果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年08月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是Image组件
  • 2、Image组件的基本用法
  • 3、Image组件的常见属性
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档