转载请标明出处:
http://www.jb51.cc/article/p-ranxxorr-bgy.html
本文出自:【江清清的博客】
(一)前言
现在几讲我们对于React Native一些基础做了相关讲解(例如:环境搭建,开发IDE,调试以及升级降级等),今天开始正式进入UI相关组件学习的阶段了。首先我们来讲一个非常基础的组件View。
刚创建的React Native技术交流群(282693535),欢迎各位大牛,React Native技术爱好者加入交流!同时博客左侧欢迎微信扫描关注订阅号,移动技术干货,精彩文章技术推送!
(二)View组件介绍
View作为创建UI时候的最基础,最常用的组件。这边的View组件是支持FlexBox布局(对于FlexBox布局的详细使用讲解,请点击),CSS样式以及相关触摸处理的容器组件。该组件我们可以嵌套在其他视图View里边,并且可以包含很多种类型的子视图。在Web,Android,iOS 三种平台上面该View视图可以对应平台中的三种原生视图,其中iOS对于UIView
,Web端对应<div>标签,Android对于android.view。下面我们来看一个比较简单的实例:
'use strict'; var React = require('react-native'); var { AppRegistry,View,} = React; var TestText = React.createClass({ render: function() { return ( <View style={{flexDirection:'row',padding:20,height:100}}> <View style={{backgroundColor:'red',flex:1}}> </View> </View> ); } });
上述例子,我们这般首先创建了一个View,该View高度为100 ,但是该View的padding为20,所以整体效果如下:
如果把padding修改成margin:20的话,那么是效果如下:
这个相信做过CSS,原生布局开发的话,大家应该都能看得懂的。
其实React Native开发,View设计的时候,也支持我们采用StyleSheet来进行书写控件的的布局,这样的话,我们的代码会更加的清晰以及便于维护了。其实React Native开发也更加推荐这种方式,下面我们采用StyleSheet来实现一下:
'use strict'; var React = require('react-native'); var { AppRegistry,StyleSheet,} = React; var TestText = React.createClass({ render: function() { return ( <View style={styles.first_view}> <View style={styles.second_view}> </View> </View> ); } }); var styles = StyleSheet.create({ first_view:{ flexDirection:'row',height:100,padding:20 },second_view: { backgroundColor:'red',flex:1 },}); AppRegistry.registerComponent('TestText',() => TestText);
以上的代码我们发现使用StyleSheet,进行创建相关styles,然后赋值给styles对象,在控件中直接styles对象进行使用即可。还是比较OK的。
(三)View属性方法介绍
序号 |
类型 |
说明 |
||
1 |
accessibilityLabel |
@H_502_320@
string |
||
2 |
accessible |
@H_502_320@
bool |
当为trues时,表示该元素是可以进行访问,默认情况下 所有可触摸的元素控件都是可以访问的 |
|
3 |
onAccessibilityTap |
@H_502_320@
function |
该党accessible有true的时候并且用户对控件View做了一个Tap(轻轻的触摸或者点击)的手势 |
|
4 |
onLayout |
@H_502_320@
function |
{nativeEvent: { layout: {x,y,width,height}}}。该事件当重新计算布局的时候会立即进行触发,不过界面可能不会立即刷新,特别当布局动画正在加载中的时候。 |
|
5 |
onMagicTap |
@H_502_320@
function |
当accessible为true的时候,当用户双指点击(Magic Tap)的时候,进行触发 |
Style标签 |
说明 |
Style标签 |
说明 |
FlexBox |
弹性布局(详细点击了解) |
transforms |
|
backfaceVisibility |
enum('visible','hidden')定义界面翻转的 时候是否可见 |
backgroundColor |
背景颜色 |
borderColor |
边跨颜色,这边几个就是代表上下左右变宽的颜色 borderTopColor,borderRightColor ,borderBottomColor,borderLeftColor |
borderRadius |
边框圆角大小,其他几个是上下左右边框的圆角.borderTopLeftRadius,borderTopRightRadius,borderBottomLeftRadius, borderBottomRightRadius |
borderStyle |
边框线的风格,这个和CSS样式一样的 ,enum('solid','dotted','dashed') |
borderWidth |
边框宽度,另外四个是上下左右的边框宽度:borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth |
opacity |
设置透明度 |
overflow |
|
elevation |
高度,设置Z轴,可以产生立体效果 |