View 组件是React Native最基本的组件.绝大部分其他React Native 组件.

View组件的颜色和边框

  1. backgroundColor 键用来指定颜色. RN 0.19版本开始,只有Text和TextInput组件会继承父组件的背景颜色
  2. Opacity键定义了View组件的透明度, 取值0-1, 0表示完全透明
  3. borderStyle键用来设置边框的风格,只能取值solid, dotted和dashed三个值之一,分别表示实线边框,点状边框和虚线边框, 默认值是solid
  4. 边框颜色borderColor, 当然也可以拆分指定四个边的颜色,如: borderTopColor
  5. 圆角边框 borderRadius,也可以分别单独设置四个角, 如左上角borderTopLeftRadius.

    如果一个View宽高相等,值为2X, 将borderRadius的值设为X时,这个View显示上会是一个圆, 这个用法比较有用

来看看示例代码:

...
class AwesomeProject extends Component {
render() {
return (
//根View
<View style={styles.container}>
<View style={styles.view1}
opacity={0.5}/>
<View style={styles.view2}
opacity={1}/>
</View>
);
}
} const styles = StyleSheet.create({
container: { //根View样式
flex: 1,
justifyContent:'space-around',// 子组件分散排列
alignItems:'center',
backgroundColor:'white'
},
view1:{
width:50,
height:50,
borderWidth:1,
borderColor:'green',
borderRadius:25,
backgroundColor:'red'
},
view2:{
width:50,
height:50,
borderWidth:2,
borderColor:'green',
borderRadius:25,
backgroundColor:'red'
}
});
...

运行结果:

View组件的视觉效果

  1. shadowColor,shadowOffset,shadowOpacity,shadowRadius是与阴影相关的样式键,分别对应着组件的阴影颜色,阴影位移值,阴影透明度与阴影圆角率.
  2. overflow键有两个字符串类型的取值:visible和hidden。它定义了当View组件中的子组件宽高超出View组件宽高时的行为. 默认是hidden,即超出部分隐藏. 这个键只针对ios平台有效,在Android平台上永远为hidden效果.
  3. elevation是Android平台特有的样式键.数值类型,通过在组件周围渲染阴影让用户产生一种组件悬浮在手机屏幕上的视觉效果.

View组件的变形

开发者可以利用transform样式键设置实现组件的变形,从而实现文字或图像的变形.变形包括: translate(平移) ,scale(缩放) , rotate(旋转) , skew(倾斜)四种类型.

transform样式键设置的格式是:

transform:
[
{perspective: number},
{rotate: string},
{rotateX:string},
{rotateY: string},
{scale: number},
{scaleX: number},
{scaleY: number},
{translateX: number},
{translateY: number},
{skewX: string},
{skewY: string}
]

rotate控制目标整体旋转,于目标内部形状无关,目标内部不发生任何形变,而skew目标内部的形状会随倾斜而改变.

perspective元素与3D变形效果有关.

示例代码:

...
class AwesomeProject extends Component {
render() {
return (
//根View
<View style={styles.container}>
<Text style={styles.text1}>
第一个Text
</Text>
<Text style={styles.text2}>
第二个Text
</Text>
<Text style={styles.text3}>
第三个Text
</Text>
<Text style={styles.text4}>
第四个Text
</Text>
</View>
);
}
} const styles = StyleSheet.create({
container: { //根View样式
flex: 1,
justifyContent:'center',
alignItems:'center',
backgroundColor:'#F5FCFF'
},
text1:{
flex: 1,
alignItems:'center',
justifyContent:'center',
transform:[{rotate:'45deg'}] // 旋转45度
},
text2:{
flex: 1,
alignItems:'center',
justifyContent:'center',
transform:[{rotateX:'45deg'},{scale:2}] //x轴旋转45度 放大2倍
},
text3:{
flex: 1,
alignItems:'center',
justifyContent:'center',
transform:[{skewY:'45deg'}] //Y轴倾斜45度
},
text4:{
flex: 1,
alignItems:'center',
justifyContent:'center',
transform:[{scale:2},{translateX:50}] //X轴平移50 放大2倍
}
});
...

运行结果:

回调函数

A组件有一个属性B的值是函数的引用,当某一个事件发生时,React Native框架通过这个属性的值回调这个函数, 为了简洁, 我们直接将提供的函数称为A组件的回调函数,这个属性B称为回调函数类型的属性, 比如我们之前接触过的 onPress 属性就是这样.

  1. onLayout是View组件的回调函数, 当View组件被加载或者布局改变时,调用
  2. onTouchStart, onTouchMove, onTouchEnd 分别在开始触摸事件,触摸点移动和触摸结束时调用, 都会收到一个event对象参数, 在event对象结构中是:
{
timeStamp : aNumber, //时间戳 , 1970年1月1日至今的毫秒数
nativeEvent: {
locationX: aNumber,
locationY: aNumber
}
}

其他属性

View的属性还有很多, 比如 pointerEvents属性, 大家可以参考我的另一篇文章React Native中pointerEvent属性

从零学React Native之07View的更多相关文章

  1. 从零学React Native之13 持久化存储

    数据持久化就是指应用程序将某些数据存储在手机存储空间中. 借助native存储 这种方式不言而喻,就是把内容传递给native层,通过原生API存储,详见从零学React Native之05混合开发 ...

  2. 从零学React Native之11 TextInput

    TextInput 组件是用来通过键盘输入文字,可以使用View组件和Text组件样式,没有自己特定的样式. 与Text组件类似,TextInput组件内部的元素不再使用FlexBox布局,而采用文本 ...

  3. 从零学React Native之03页面导航

    之前我们介绍了RN相关的知识: 是时候了解React Native了 从零学React Native之01创建第一个程序 从零学React Native之02状态机 本篇主要介绍页面导航 上一篇文章给 ...

  4. 从零学React Native之02状态机

    本篇文章首发于简书 欢迎关注 之前我们介绍了RN相关的知识: 是时候了解React Native了 从零学React Native之01创建第一个程序 本篇文章主要介绍下下面的知识: 1.简单界面的搭 ...

  5. 从零学React Native之04自定义对话框

    本篇主要介绍: 1. 自定义组件 2. Alert 对话框 自定义对话框 之前的我都是利用React Native提供的基础组件对它们进行排列组合, 其实自定义也很简单, 我们还是拿上一篇文章的例子进 ...

  6. 从零学React Native之14 网络请求

    通过HTTP或者HTTPS协议与网络侧服务器交换数据是移动应用中常见的通信方式. node-fetch是RN推荐的请求方式. React Native框架在初始化项目时, 引入了node-fetch包 ...

  7. 从零学React Native之12 组件的生命周期

    一个React Native组件从它被加载,到最终被卸载会经历一个完整的生命周期.所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命周期,是合理开发的关键. ES6语法和之前的ES5 ...

  8. 从零学React Native之10Text

    在React Native开发中,所有需要显示的字符串文本都需要放置在Text或者Text的子组件中.虽然在之前的文章中多次使用了Text组件,但是Text组件还是值得专门学习的, 并没有想象中的那么 ...

  9. 从零学React Native之08Image组件

    开发过程中, 几乎每个项目都会用到图片. RN就是通过Image组件显示图片.既可以加载网络图片,也可以加载本地资源图片. Image组件必须在样式中声明图片的款和高.如果没有声明,则图片将不会被呈现 ...

随机推荐

  1. 在VUE中使用Echarts

    第一步:下载echarts npm install echarts --save 第二步:在项目中main.js引入 import echarts from 'echarts' Vue.prototy ...

  2. Eclipse-搭建springboot项目报错

    Eclipse Maven pom报错: org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.Ma ...

  3. IO流2 --- File类的常用方法1 --- 技术搬运工(尚硅谷)

    File类的获取功能 @Test public void test2(){ File file1 = new File("hello.txt"); File file2 = new ...

  4. swagger暴露程序接口文档

    Swagger2是一个帮助用户.团队.企业快速.高效.准确地生产API服务的工具组件,同时还提供了部分测试功能,它的官方网站是https://swagger.io/. 1.引入Maven <de ...

  5. 洛谷P1969 [NOIP2013提高组Day2T1] 积木大赛

    P1969 积木大赛 题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前, ...

  6. SourceTree windows免注册免登陆使用方法

    问题描述: 安装SourceTree后,首次使用时,需要登录账号:但我们在注册或登录时,可能根本无法打开网页,导致不能进入. 如下截图: 解决方法: 在目录C:\Users\XXXXX\AppData ...

  7. SEO优化步骤

    SEO技术并不是简单的几个建议,而是一项需要足够耐心和细致的脑力劳动.大体上,SEO优化主要分为8小步: 1.关键词分析(也叫关键词定位) 这是进行SEO优化最重要的一环,关键词分析包括:关键词关注量 ...

  8. homeworkvue

    两个半圆,点一下转90°,两个颜色 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  9. [Vue CLI 3] Uglify 相关的应用和设计

    在本文开始之前,先留一个问题? 如果在新版本我想加一个 drop_console 的配置呢? 在老版本的脚手架生成的配置中,对于线上环境的文件:webpack.prod.conf.js 使用了插件:u ...

  10. java 3类的继承

    模板类 泛型程序设计方法 类的组合 类的继承 java只有单继承 隐藏和覆盖 用super.x调用 访问静态属性 静态属性不继承 静态成员只有一个,不会有副本 静态成员只有一个所有的超类和子类 方法的 ...