一个用于显示多种不同类型图片的React组件,包括网络图片、静态资源、临时的本地图片、以及本地磁盘上的图片(如相册)等

一:属性

1:onLayout function

当元素挂载或者布局改变的时候调用,参数为:{nativeEvent: {layout: {x, y, width, height}}}.

2:onLoad function

加载成功完成时调用此回调函数。

3:onLoadEnd function

加载结束后,不论成功还是失败,调用此回调函数。

4:onLoadStart function

加载开始时调用。

5:resizeMode enum('cover', 'contain', 'stretch')

决定当组件尺寸和图片尺寸不成比例的时候如何调整图片的大小。

6:cover: 在保持图片宽高比的前提下缩放图片,直到宽度和高度都大于等于容器视图的尺寸(如果容器有padding内衬的话,则相应减去)。译注:这样图片完全覆盖甚至超出容器,容器中不留任何空白。

7:contain: 在保持图片宽高比的前提下缩放图片,直到宽度和高度都小于等于容器视图的尺寸(如果容器有padding内衬的话,则相应减去)。译注:这样图片完全被包裹在容器中,容器中可能留有空白

8:stretch: 拉伸图片且不维持宽高比,直到宽高都刚好填满容器。

9:source {uri: string}, number

uri是一个表示图片的资源标识的字符串,它可以是一个http地址或是一个本地文件路径(使用require(相对路径)来引用)。

10:testID string

一个唯一的资源标识符,用来在自动测试脚本中标识这个元素。

11:(ios)accessibilityLabel string

当用户与图片交互时,读屏器(无障碍功能)会朗读的文字。

12:(ios)accessible bool

当此属性为真的时候,表示这个图片是一个启用了无障碍功能的元素。

13:(ios)blurRadius number

blurRadius(模糊半径):为图片添加一个指定半径的模糊滤镜。

14:(ios)capInsets {top: number, left: number, bottom: number, right: number}

当图片被缩放的时候,capInsets指定的角上的尺寸会被固定而不进行缩放,而中间和边上其他的部分则会被拉伸。这在制作一些可变大小的圆角按钮、阴影、以及其它资源的时候非常有用(译注:这就是常说的九宫格或者.9图。了解更多信息,可以参见苹果官方文档

15:(ios)defaultSource {uri: string}

一个静态图片,当最终的图片正在下载的过程中时显示(loading背景图)。

16:(ios)onError function

当加载错误的时候调用此回调函数,参数为{nativeEvent: {error}}

17:(ios)onProgress function

在加载过程中不断调用,参数为{nativeEvent: {loaded, total}}

二:属性

1:FlexBox 支持弹性盒子风格

2:Transforms 支持属性动画

3:resizeMode 设置缩放模式

4:backgroundColor 背景颜色

5:borderColor 边框颜色

6:borderWidth 边框宽度

7:borderRadius 边框圆角

8:overflow 设置图片尺寸超过容器可以设置显示或者隐藏('visible','hidden')

9:tintColor 颜色设置

10:opacity 设置不透明度0.0(透明)-1.0(完全不透明)

11:alignSelf:center 代表在当前的布局中居中

12:flexDirection:row 这个属性代表是以横向布局

三:方法

1:static getSize(uri: string, success: (width: number, height: number) => void, failure: (error: any) => void)

在显示图片前获取图片的宽高(以像素为单位)。如果图片地址不正确或下载失败,此方法也会失败。

要获取图片的尺寸,首先需要加载或下载图片(同时会被缓存起来)。这意味着理论上你可以用这个方法来预加载图片,虽然此方法并没有针对这一用法进行优化,而且将来可能会换一些实现方案使得并不需要完整下载图片即可获取尺寸。所以更好的预加载方案是使用下面那个专门的预加载方法。

2:static prefetch(url: string) #

预加载一个远程图片(将其下载到本地磁盘缓存)。

三:实例代码

import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
TextInput,
Alert,
Image
} from 'react-native'; class ReactNativeProject extends Component {
render() {
return (
<View style={styles.container}>
<Image style={styles.imageTopStyle} source={{uri:"http://f1.diyitui.com/18/ac/88/89/c4/1b/ed/86/be/1c/46/62/79/1e/85/f1.jpg"}}/> <Image style={styles.imageCenterStyle} source={require('./img/myimage.png')}/> <Image style={styles.imageCenterStyle} source={require('image!myicon')}/>
</View>
);
}
} const styles = StyleSheet.create({
container: {
flex: 1,
marginTop:64
},
imageTopStyle:{
marginTop:20,
marginRight:20,
marginLeft:20,
height:100,
width:100,
resizeMode:'cover'
},
imageCenterStyle:
{
marginRight:10,
marginTop:20,
height:50,
width:50
}
}); AppRegistry.registerComponent('ReactNativeProject', () => ReactNativeProject);

效果图:

注意:上面三张分别对应加载三种图片的方式,第一种是加载网络图,第二种是加载项目文件的图,第三种是加载iOS项目里面的图;

上面这种就是加载项目里面的图片,如果在虚拟器新增加这张图时,记得把终端服务重启一下,否则会报错;

上面这种是加载Xcode里面的xcassets的图片,要重新运行XCode才会有效果;

最近有个妹子弄的一个关于扩大眼界跟内含的订阅号,每天都会更新一些深度内容,在这里如果你感兴趣也可以关注一下(嘿对美女跟知识感兴趣),当然可以关注后输入:github 会有我的微信号,如果有问题你也可以在那找到我;当然不感兴趣无视此信息;

React Native知识4-Image组件的更多相关文章

  1. React Native知识5-Touchable类组件

    React Native 没有像web那样可以给元素绑定click事件,前面我们已经知道Text组件有onPress事件,为了给其他组件 也绑定点击事件,React Native提供了3个组件来做这件 ...

  2. React Native知识

    http://www.cnblogs.com/wujy/tag/React%20Native/    React Native知识12-与原生交互 React Native知识11-Props(属性) ...

  3. React Native 项目常用第三方组件汇总

    React Native 项目常用第三方组件汇总 https://www.jianshu.com/p/d9cd9a868764?utm_campaign=maleskine&utm_conte ...

  4. React Native知识6-NavigatorIOS组件

    NavigatorIOS包装了UIKit的导航功能,可以使用左划功能来返回到上一界面.本组件并非由Facebook官方开发组维护.这一组件的开发完全由社区主导.如果纯js的方案能够满足你的需求的话,那 ...

  5. React Native知识2-Text组件

    Text用于显示文本的React组件,并且它也支持嵌套.样式,以及触摸处理.在下面的例子里,嵌套的标题和正文文字会继承来自styles.baseText的fontFamily字体样式,不过标题上还附加 ...

  6. React Native知识12-与原生交互

    一:原生传递参数给React Native 1:原生给React Native传参 原生给JS传数据,主要依靠属性. 通过initialProperties,这个RCTRootView的初始化函数的参 ...

  7. React Native知识1-FlexBox 布局内容

    一:理论知识点 1:什么是FlexBox布局? 弹性盒模型(The Flexible Box Module),又叫Flexbox,意为“弹性布局”,旨在通过弹性的方式来对齐和分布容器中内容的空间,使其 ...

  8. React Native知识10-ListView组件

    ListView - 一个核心组件,用于高效地显示一个可以垂直滚动的变化的数据列表.最基本的使用方式就是创建一个ListView.DataSource数据源,然后给它传递一个普通的数据数组,再使用数据 ...

  9. React Native知识9-ScrollView组件

    一个包装了平台的ScrollView(滚动视图)的组件,同时还集成了触摸锁定的“响应者”系统. 记住ScrollView必须有一个确定的高度才能正常工作,因为它实际上所做的就是将一系列不确定高度的子组 ...

  10. React Native知识7-TabBarIOS组件

    一:简介 两个TabBarIOS和TabBarIOS.Item组件可以实现页面Tab切换的功能,Tab页面切换的架构在应用开发中还是非常常见的.如:腾讯QQ,淘宝,美团外卖等等 二:TabBarIOS ...

随机推荐

  1. 用js实现放大镜的效果

    第一次发博客,还有点小激动,本人现在正在天津上大学,希望以后从事前端这一行业,学习的时间不长,写博客为了记录自己的学习过程和收获,当然也算是巩固.可能写的东西不会像大牛那样高大上,只是一些基本的内容, ...

  2. 苹果系统安装虚拟机 Mac如何安装虚拟机教程

    1.前言    大家在用 Mac 系统的时候,可能有时难免还是要用到 Windows 系统.在 Mac 上使用 Windows 系统有二种方法.一种是在 Mac上安装双系统,适合要在机器上处理一些大型 ...

  3. hdu4833 Best Financing(DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4833 这道题目关键的思想是从后往前dp,dp[i]表示在第i处投资xi能获得的最大收益,其中xi表示从 ...

  4. android 如何获取手机的图片、视频、音乐

    在android 开发中,很多时候,我们会需要调用到用户本机的照片.视频或者是音乐让用户选择,来进行我们APP对应的操作. button.setOnClickListener(new OnClickL ...

  5. ios使用jspatch中需要注意的事项

    第一份代码,为了纠正原代码不显示29号的bug,先上代码 require('NSString','MCDatePickType','NSMutableArray','UIButton'); defin ...

  6. Oracle 11g安装GI后,运行roothas.pl脚本报错libcap.so.1找不到

    环境:RHEL6.4 + Oracle 11.2.0.3问题:需求是文件系统迁移到ASM,在安装GI后,运行roothas.pl脚本报错 1.运行root.sh后,按提示运行roothas.pl报错 ...

  7. WebGIS中兴趣点简单查询、基于Lucene分词查询的设计和实现

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 兴趣点查询是指:输入框中输入地名.人名等查询信息后,地图上可 ...

  8. PHP数组及简单函数

    PHP函数: 1.简单函数 四要素:返回类型,函数名,参数列表,函数体 function Show() { echo "hello"; } Show(); 运行结果:hellow ...

  9. 用CS的思维可以指导BS的项目吗?

    最近项目上线,越来越觉的让人不爽.1.在录数据的界面领导要求用Enter键一路打下来,用户不用操作鼠标数据就可以录完. 2.CS的项目中用快捷键的确很方便,但是大家在BS的项目中也用快捷键吗? 反正我 ...

  10. 百度编辑器ueditor插入表格没有边框,没有颜色的解决方法 2015-01-06 09:24 98人阅读 评论(0) 收藏

    百度富文本编辑器..很强大.. - - ,不过有些BUG..真的很无解.. 最近用这个,发现上传的表格全部没有表框.. 解决办法如下: 转载的.. 百度编辑器ueditor插入一个表格后,在编辑过程中 ...