Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

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

$
0
0

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}}  


效果:





作者:ZY_FlyWay 发表于2017/8/15 16:47:32 原文链接
阅读:2 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>