一、简介

标签栏Tab的作用对于应用程序那是不言而喻的,它是应用程序中除了导航栏组件外的又一个核心组件,使用它可以实现页面的切换。RN提供了一个TabBarIOS组件来完成页面的切换(视图或者路由),它代表整个标签栏,不过它需要搭配的它的一个附属组件TabBarIOS.Item,它代表每一个tabItem。TabBarIOS组件内部可以包含多个TabBarIOS.Item组件,而在每一个TabBarIOS.Item组件内部又必须包括容器视图组件显示页面。基本格式如下:

<TabBarIOS> //标签栏
<TabBarIOS.Item> //页面1的tab item
<View></View> //页面1
</TabBarIOS.Item> <TabBarIOS.Item> //页面2的tab item
<View></View> //页面2
</TabBarIOS.Item> <TabBarIOS.Item> //页面3的tab item
<View></View> //页面3
</TabBarIOS.Item> <TabBarIOS.Item> //页面4的tab item
<View></View> //页面4
</TabBarIOS.Item>
</TabBarIOS>

二、TabBarIOS

主要属性

//Tab栏的背景颜色
barTintColor //Tab未选中的标签背景颜色
unselectedTintColor //Tab选中的标签背景颜色
tintColor //Tab未选中的item背景色
unselectedItemTintColor //Tab栏是否半透明
translucent //Tab的每一个item的位置
itemPositioning

三、TabBarIOS.Item

主要属性

//红色的提醒数字或者文字,一般用作消息提示
badge //提示数字或者文字的背景色
badgeColor //Tab的自定义图标,如果不指定,默认显示系统图标systemIcon
icon //点击事件,当某一个tab被选中时,需要改变该组件的selected={true}设置
onPress //是否选中某一个tab,如果其值为true,则选中并显示子组件
selected //选中状态的自定义图标,如果为空,默认会把图标变成蓝色
selectedIcon //系统图标,会覆盖自定义图标和标题,其值为枚举类型,可选值包括:bookmarks、contacts、downloads、favorites、featured、history、more、most-recent、most-viewed、recents、search和top-rated
systemIcon //是否采用原始图颜色渲染
renderAsOriginal //标题,它会出现在图标底部。当我们使用了系统图标时,将会忽略该标题
title

三、使用

TabBar.js【注意:在icon配置中使用scale:2,保证了图标不变形】

import React, { Component } from 'react';
import {
StyleSheet,
View,
TabBarIOS
} from 'react-native'; export default class TabBar extends Component{ constructor(props){
super(props);
this.state = {tabItemIndex:0}
} render(){
const {tabItemIndex} = this.state;
return (
<View style={styles.flex}>
<TabBarIOS style={styles.size} tintColor={'black'} translucent={true}>
<TabBarIOS.Item
title={"首页"}
icon={{uri:"tab_home",scale:2}}
selectedIcon={{uri:"tab_home_click",scale:2}}
renderAsOriginal={true}
onPress={()=>{this.setState({tabItemIndex:0})}}
selected={tabItemIndex === 0}>
<View style={[styles.flex,styles.tab1]}/>
</TabBarIOS.Item>
<TabBarIOS.Item
title={"消息"}
icon={{uri:"tab_information",scale:2}}
selectedIcon={{uri:"tab_information_click",scale:2}}
renderAsOriginal={true}
onPress={()=>{this.setState({tabItemIndex:1})}}
selected={tabItemIndex === 1}>
<View style={[styles.flex,styles.tab2]}/>
</TabBarIOS.Item>
<TabBarIOS.Item
title={"我的"}
icon={{uri:"tab_mine",scale:2}}
selectedIcon={{uri:"tab_mine_click",scale:2}}
renderAsOriginal={true}
onPress={()=>{this.setState({tabItemIndex:2})}}
selected={tabItemIndex === 2}>
<View style={[styles.flex,styles.tab3]}/>
</TabBarIOS.Item>
</TabBarIOS>
</View>
)
}
} const styles = StyleSheet.create({
flex: {
flex: 1,
},
size: {
height: 49,
},
tab1: {
marginBottom: 49,
backgroundColor: 'red'
},
tab2: {
marginBottom: 49,
backgroundColor: 'green'
},
tab3: {
marginBottom: 49,
backgroundColor: 'brown'
}
});

index.ios.js

/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/ import React, { Component } from 'react';
import TabBar from './src/TabBar' import {
AppRegistry,
StyleSheet,
View
} from 'react-native'; export default class ReactNativeDemo extends Component { render() {
return (
<View style={styles.flex}>
<TabBar/>
</View>
);
}
} const styles = StyleSheet.create({
flex: {
flex: 1
}
}); AppRegistry.registerComponent('ReactNativeDemo', () => ReactNativeDemo);

ReactNative: 使用标签栏组件TabBarIOS组件的更多相关文章

  1. ReactNative Android之原生UI组件动态addView不显示问题解决

    ReactNative Android之原生UI组件动态addView不显示问题解决 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com ...

  2. ReactNative: 使用弹出框组件ActionSheetIOS组件

    一.简介 在上一篇文章中,详细介绍了对话框组件,除此之外,React-Native系统还给开发者提供了一个弹框框组件ActionSheetIOS组件,它的弹出方式与对框框不同,它是从底部弹出,与iOS ...

  3. ReactNative: 使用滚动视图ScrollView组件

    一.简介 当页面内容的非常多时,即使换行后仍然无法充分显示,此时最好的解决办法就是让页面可以滚动显示.在React-Native中,提供了可供滚动的视图组件ScrollView组件.它的属性和方法以及 ...

  4. ReactNative: 使用Touchable触摸类组件

    一.简介 在应用程序中,最灵魂的功能就是交互.通过给应用程序的组件添加事件来实现交互,进而提高用户体验.然而,ReactNative并不能像Web开发那样可以给大多数的标签元素绑定click事件,例如 ...

  5. Vue.js学习 Item11 – 组件与组件间的通信

    什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有 ...

  6. Vue中父子组件通讯——组件todolist

    一.todolist功能开发 <div id="root"> <div> <input type="text" v-model=& ...

  7. $Django Rest Framework-认证组件,权限组件 知识点回顾choices,on_delete

    一 小知识点回顾 #orm class UserInfo (models.Model): id = models.AutoField (primary_key=True) name = models. ...

  8. Vuejs——(12)组件——动态组件

    版权声明:出处http://blog.csdn.net/qq20004604   目录(?)[+]   本篇资料来于官方文档: http://cn.vuejs.org/guide/components ...

  9. python 全栈开发,Day78(Django组件-forms组件)

    一.Django组件-forms组件 forms组件 django中的Form组件有以下几个功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显 ...

随机推荐

  1. Day 08 作业

    有如下值集合 [11, 22, 33, 44, 55, 66, 77, 88, 99, 90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中 ​ ...

  2. 关于JAVA的Random类的冷知识(转自菜鸟V)

    JAVA的Random类(转) Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基 ...

  3. CSS | 自适应两栏布局方法

    html代码: <div class="main"> <div class="left" style="background: #0 ...

  4. 《Java知识应用》Java加密方式(MD5)详解

    1. 应用 使用MD5加密 因为:因为MD5的不可逆性,也可以保证你的key 是安全的,黑客无法通过原文和密文知晓你的key. 案例: import java.math.BigInteger; imp ...

  5. Wonder暂停开发,开始写书

    公告 大家好,我们决定暂时停止开发Wonder,但会继续维护当前的Wonder版本(如继续维护官网.在线编辑器.QQ群等). 我们当前的主要任务是 写书:基于Wonder 1.0版本的开发经验,写一本 ...

  6. 4、看源码MVC Controller如何调用Action

    Controller继承ControllrBase,ControllerBase继承IController,而IController里只有一个Execute方法 1.ControllrBase里的Ex ...

  7. MySQL基础-存储过程

    存储过程 定义:将一批为了完成特定功能的SQL语句集,根据传入的参数(也可没有),调用,完成单个sql语句更复杂的功能 存储过程思想很简单,就是SQL语句层面上的代码封装和重用 优点:1) 可封装,并 ...

  8. flask项目部署到生产环境的方案

    背景 使用Python+flask编写的一个小项目,在本地开发完毕后,需要部署到测试服务器上,这时候犯难了,因为之前没部署过这块东西,所以各种百度,总算是部署成功了,也对这个项目进行了jenkins持 ...

  9. 【编码】彻底弄懂ASCII、Unicode、UTF-8之间的关系

    计算机中的所有字符,说到底都是用二进制的0.1的排列组合来表示的,因此就需要有一个规范,来枚举规定每个字符对应哪个0.1的排列组合,这样的规范就是字符集. ASCII 全称是“美国信息交换标准码”(A ...

  10. WebRTC Android版本编译

    本文简单介绍如何在Ubuntu18.04 上,编译WebRTC Android版本. 安装工具 需要用到depot_tools工具来下载webrtc源码. 安装 depot_tools git 命令获 ...