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属性方法介绍如下:序号 | 名称 | 属性或者方法 | 类型 | 说明 |
---|---|---|---|---|
1 | accessibilityLabel | 属性 | string | |
2 | accessible | 属性 | bool | 当为true时,表示该元素是可以进行访问,默认情况下所有可触摸的元素控件都是可以访问的 |
3 | onAccessibilityTap | 方法 | function | 该当accessible为true的时候并且用户对控件View做了一个Tap(轻轻的触摸或者点击)的手势 |
4 | onLayout | 方法 | function | 当组件的布局发生变动的时候,会自动调用下面的方法:{nativeEvent: { layout: {x, y, width, height}}}。该事件当重新计算布局的时候回立即进行触发,不过界面可能不会立即刷新,特别当布局动画正在加载中的时候。 |
5 | onMagicTap | 方法 | 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 | 弹性布局(详细介绍请点击) |
backfaceVisibility | enum(‘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 | 设置超过容器内容显示与否 |
属性名 | 作用 | 平台 |
---|---|---|
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平台 |
相关文章推荐
- React学习笔记3
- React学习笔记2
- React学习笔记1
- React Ajax this.IsMounted() is not a function
- React Native 学习之Text组件
- Windows下使用AndroidStudio+ReactNative开发Android应用
- 【muduo库学习】实现最简单的reactor模式
- react 常用命令
- 适配 react web
- React知识库内容精选:10篇文章让你迅速了解该框架
- React Native:从入门到原理
- React服务器端渲染
- 从 React Router 谈谈路由的那些事
- 轻松入门React和Webpack (React 热插拔)
- ReactJS组件生命周期详述
- java模式之Reactor
- React知识库内容精选:10篇文章让你迅速了解该技术
- ReactiveCocoa学习(二)
- 整理了一份React-Native学习指南
- [转] 学习React Native必看的几个开源项目