您的位置:首页 > Web前端 > React

React Native控件之View视图解析

2016-06-15 21:16 483 查看

React Native控件之View视图解析

(一)前言

这篇文章我们来讲解一下View控件,今天的内容是非常基础,但是是非常有用的东西。特别注意View控件的属性和方法,要记住一些非常常用的属性与方法。

(二)View介绍

View作为创建UI时候最基础最常用的组件,在react-native中View组件是支持FlexBox布局(FlexBox布局的详细使用讲解)、CSS样式以及相关触摸处理的容器组件。该组件我们可以嵌套在其他视图View里边,并且可以包含多种类型的子视图。在Web、Android、iOS三种平台上面,View视图分别对应三种平台原生视图,在iOS中对应UIView,在Web中对应< div >标签,Android对应android.view,下面举出一个简单的例子:



上诉代码创建一个高度为100的View组件,padding为20,也就是说填充物为20,再在这个视图里面嵌套一个红色的View视图。然后继续在红色视图中嵌套一个Text组件。

其实在写React Native项目的时候,一般在实际开发中,都会将样式写成CSS样式,这样写代码读起来比较清晰,而且便于以后项目维护,以下就是使用CSS方式重写上述代码:

'use strict'
import React, { Component } from 'react';
import  {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native'

var PerfectProject = React.createClass({
render: function(){
return (
<View style={styles.first_view}>
<View style={styles.second_view}>
<Text>这是一个红色View!</Text>
</View>
</View>
);
},
});

var styles = StyleSheet.create({
first_view:{
flexDirection:'row',
height:100,
padding:20
},
second_view: {
backgroundColor:'red',
flex:1
},
});

AppRegistry.registerComponent('PerfectProject',() => PerfectProject);


(三)View的属性方法

View属性方法介绍如下:

序号名称属性或者方法类型说明
1accessibilityLabel属性string
2accessible属性bool当为true时,表示该元素是可以进行访问,默认情况下所有可触摸的元素控件都是可以访问的
3onAccessibilityTap方法function该当accessible为true的时候并且用户对控件View做了一个Tap(轻轻的触摸或者点击)的手势
4onLayout方法function当组件的布局发生变动的时候,会自动调用下面的方法:{nativeEvent: { layout: {x, y, width, height}}}。该事件当重新计算布局的时候回立即进行触发,不过界面可能不会立即刷新,特别当布局动画正在加载中的时候。
5onMagicTap方法function当accessible为true的时候,当用户双指点击(Magic Tap)的时候,进行触发。
其他的一些方法如下(下面很多是关于事件响应者链的,都比较简单的,就不着重讲解的,有兴趣大家都可以去测试一下):

onMoveShouldSetResponder

onMoveShouldSetResponderCapture

onPresponderGrant

onResponderMove

onResponderReject

onResponderRelease

onResponderTerminate

onResponderTerminationRequest

onStartShouldSetResponder

onStartShouldSetResponderCapture

pointerEvents enum(‘box-none’, ‘none’, ‘box-only’, ‘auto’)(触摸事件是否可以进行穿透控件View);

removeClippedSubviews:该控件由于进行优化性能,尤其在一些滑动控件上面。该属性生效的要求如下:首先子视图的内容非常多,已经超过父容器,并且子视图和父容器视图都有overflow:hidden风格样式。

【注意】关于上面一些方法的具体使用,后面在讲到事件响应者的时候会进行着重讲解。

(四)View样式——Style便签介绍

在React Native的Style样式布局中,有许多Style标签,简要介绍一下:

Style标签说明
FlexBox弹性布局(详细介绍请点击
backfaceVisibilityenum(‘visible’,’hidden’)定义界面翻转的时候是否可见
borderColor边框颜色,这边几个就是代表上下左右边框的颜色(borderTopColor,borderRightColor,borderBottomColor,borderLeftColor)
borderStyle边框线的风格,这个和CSS样式是一样的,enum(’solid’,’dotted’,’dashed’)
opacity设置透明度
elevation高度,设置Z轴,可以产生立体效果
transforms动画属性(详细介绍请点击
backgroundColor颜色
borderRadius边框圆角大小,其他几个是上下左右边框的圆角.borderTopLeftRadius,borderTopRightRadius,borderBottomLeftRadius,borderBottomRightRadius
borderWidth边框宽度,另外四个是上下左右的边框宽度:borderTopWidth,borderLeftWidth,borderBottomWidth,borderRightWidth
overflow设置超过容器内容显示与否
下面有几个特殊的属性,在这里介绍所有平台通用以及只能在Android平台上有效果的属性。

属性名作用平台
testID可以根据该testID在测试的时候定位该View全平台
accessibilityComponentType定义是否该UI组件和原生组件一致化处理android平台
accessibilityLiveRegion enum(‘none’,’polite’,’assertive’)该当View发生更新时候的,是否需要通过用户,不过该只对Android4.4以及以上的平台设备有效果android平台
collapsable布局合并优化使用android平台
importantForAccessibility enum(‘auto’, ‘yes’, ‘no’, ‘no-hide-descendants’)设置视图响应事件等级android平台
needsOffscreenAlphaCompositing设置View是否需要渲染和半透明度效果处理的先后次序。android平台
renderToHardwareTextureAndroid设置是否需要GPU进行渲染android平台
可以参考官方例子UIExplorer项目,这个项目包含所有组件的例子代码:https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/ViewExample.js
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: