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属性来达到想要的内容。
- cover模式只求在显示比例不失真的情况下填充整个显示区域。可以对图片进行放大或者缩小,超出显示区域的部分不显示, 也就是说,图片可能部分会显示不了。
- contain模式是要求显示整张图片, 可以对它进行等比缩小, 图片会显示完整,可能会露出Image控件的底色。 如果图片宽高都小于控件宽高,则不会对图片进行放大。
- stretch模式不考虑保持图片原来的宽,高比.填充整个Image定义的显示区域,这种模式显示的图片可能会畸形和失真。
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 查看评论