ReactNative: 使用标签栏组件TabBarIOS组件
一、简介
标签栏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组件的更多相关文章
- ReactNative Android之原生UI组件动态addView不显示问题解决
ReactNative Android之原生UI组件动态addView不显示问题解决 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com ...
- ReactNative: 使用弹出框组件ActionSheetIOS组件
一.简介 在上一篇文章中,详细介绍了对话框组件,除此之外,React-Native系统还给开发者提供了一个弹框框组件ActionSheetIOS组件,它的弹出方式与对框框不同,它是从底部弹出,与iOS ...
- ReactNative: 使用滚动视图ScrollView组件
一.简介 当页面内容的非常多时,即使换行后仍然无法充分显示,此时最好的解决办法就是让页面可以滚动显示.在React-Native中,提供了可供滚动的视图组件ScrollView组件.它的属性和方法以及 ...
- ReactNative: 使用Touchable触摸类组件
一.简介 在应用程序中,最灵魂的功能就是交互.通过给应用程序的组件添加事件来实现交互,进而提高用户体验.然而,ReactNative并不能像Web开发那样可以给大多数的标签元素绑定click事件,例如 ...
- Vue.js学习 Item11 – 组件与组件间的通信
什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有 ...
- Vue中父子组件通讯——组件todolist
一.todolist功能开发 <div id="root"> <div> <input type="text" v-model=& ...
- $Django Rest Framework-认证组件,权限组件 知识点回顾choices,on_delete
一 小知识点回顾 #orm class UserInfo (models.Model): id = models.AutoField (primary_key=True) name = models. ...
- Vuejs——(12)组件——动态组件
版权声明:出处http://blog.csdn.net/qq20004604 目录(?)[+] 本篇资料来于官方文档: http://cn.vuejs.org/guide/components ...
- python 全栈开发,Day78(Django组件-forms组件)
一.Django组件-forms组件 forms组件 django中的Form组件有以下几个功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显 ...
随机推荐
- 【JS】306- 深入理解 call,apply 和 bind
作者:一像素 链接:https://www.cnblogs.com/onepixel/p/6034307.html 在JavaScript 中,call.apply 和 bind 是 Function ...
- 重新精读《Java 编程思想》系列之组合与继承
Java 复用代码的两种方式组合与继承. 组合 组合只需将对象引用置于新类中即可. 比如我们有一个B类,它具有一个say方法,我们在A类中使用B类的方法,就是组合. public class B { ...
- LNMP-Nginx负载均衡
Nginx负载均衡介绍 Nginx提供负载均衡的模块upstream,这个模块是默认的,不需要重新编译模块.通常情况下,负载均衡一般用于后端两台机器同时提供服务供用户访问,但是用户经常访问的其中一台服 ...
- 垂直margin为什么会重叠
之前看到的post中有这样的一个问题:垂直margin为什么会重叠?我可以说出solve,但是说不出why. 在stackoverflow上找到了一个很好的解释:margin的定义不是让元素移动xxp ...
- 通过Redis 实现分布式锁_利用Jedis 客户端
前言 分布式锁一般有三种实现方式: 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁. 本篇博客将介绍第二种方式,基于Redis实现分布式锁. 虽然网上已经有各种介 ...
- So Easy - 在Linux服务器上部署 .NET Core App
.NET Core 是微软提供的免费.跨平台和开源的开发框架,可以构建桌面应用程序.移动端应用程序.网络应用程序.物联网应用程序和游戏应用程序等.如果你是 Windows 平台下的 dotnet 开发 ...
- Spire.Cloud 在线编辑
简介 Spire.Cloud在线编辑器是一款基于网页的 Office 文件编辑工具,支持在网页中打开.编辑.打印 Word.Excel.PPT 文件,支持将文档保存到私有云盘.支持 IE.Chrome ...
- 南邮CTF - Writeup
南邮CTF攻防平台Writeup By:Mirror王宇阳 个人QQ欢迎交流:2821319009 技术水平有限~大佬勿喷 ^_^ Web题 签到题: 直接一梭哈-- md5 collision: 题 ...
- AI: Web: 2 Vulnhub Walkthrough
靶机下载链接: https://www.vulnhub.com/entry/ai-web-2,357 主机端口扫描: 尝试SQL注入,未发现有注入漏洞,就注册创建于一账户 http://10.10.2 ...
- linux搭建TFTP服务
1.安装tftp服务和客户端 sudo apt-get install xinetd tftp tftpd 2.配置 vim /etc/xinetd.d/tftp 内容如下: service tftp ...