React Native - 标签组件(TabBarIOS)的使用详解
作者:hangge | 2017-02-23 08:03
标签栏在开发中常常会使用到,通常在 App 中都是通过 Tab 切换实现主体功能的切换。React Native 为我们提供了一个相关组件:TabBarIOS。下面通过样例演示如何使用。
1,TabBarIOS组件介绍
TabBarIOS 组件就是为了切换不同页面(视图或者路由)产生,目前只支持 iOS 系统。它还有个附属组件:TabBarIOS.Item,用来表示具体的某个标签页。
(1)TabBarIOS 组件属性
- barTintColor:Tab 栏的背景颜色。
- tintColor:当我们选中某个 Tab 时,该 Tab 的图标颜色。
- translucent:Tab 栏是否透明。
(2)TabBarIOS.Item 组件属性
- badge:红色的提示数字,可以用来做消息提醒。
- icon:Tab 的图标,如果不指定,默认显示系统图标。
- onPress:点击事件。当某个 Tab 被选中时,需要改变该组件的 select={true} 设置。
- selected:是否选中某个 Tab。如果其值为 true,则选中并且显示子组件。
- selectedIcon:选中状态的图标,如果为空,则将图标变为蓝色。
- systemIcon:系统图标。是枚举类型,可选值有:bookmarks、contacts、downloads、favorites、featured、history、more、most-recent、most-viewed、recents、search、top-rated。
2,效果图
(1)底部标签栏一个放置 3 个标签按钮,点击后会切换显示对应的页面,每个页面显示不同的内容。
(2)Tab 按钮图标这里使用的是本地图片。同时 TabBarIOS 会对图标进行统一处理,选中的 Tab 图标显示为蓝色,未选中的为灰色。
3,样例代码
import React, {Component} from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
ScrollView,
TabBarIOS
} from 'react-native';
//默认应用的容器组件
class App extends Component {
//构造函数
constructor(props) {
super(props);
this.state = {tab: 'message'};
}
//Tab标签点击
select(tabName) {
this.setState({tab: tabName});
}
//渲染
render() {
return (
<TabBarIOS style={styles.flex}>
<TabBarIOS.Item title="支付宝" icon={require("./image/zhifubao.png")}
onPress={this.select.bind(this, 'message')}
selected={this.state.tab === 'message'}>
<ScrollView>
<View style={styles.message}>
<Text style={styles.message_title}>支付宝</Text>
<Text>
支付宝(中国)网络技术有限公司是国内领先的第三方支付平台,
致力于提供“简单、安全、快速”的支付解决方案。
</Text>
</View>
</ScrollView>
</TabBarIOS.Item>
<TabBarIOS.Item title="大众点评" icon={require("./image/dzdp.png")}
onPress={this.select.bind(this, 'phonelist')}
selected={this.state.tab === 'phonelist'}>
<ScrollView>
<View style={styles.message}>
<Text style={styles.message_title}>大众点评</Text>
<Text>
大众点评是中国领先的本地生活信息及交易平台,也是全球最早建
立的独立第三方消费点评网站。
</Text>
</View>
</ScrollView>
</TabBarIOS.Item>
<TabBarIOS.Item title="携程" icon={require("./image/xc.png")}
onPress={this.select.bind(this, 'star')}
selected={this.state.tab === 'star'}>
<ScrollView>
<View style={styles.message}>
<Text style={styles.message_title}>携程</Text>
<Text>
携程旅行网拥有国内外六十余万家会员酒店可供预订,是中国领先
的酒店预订服务中心。
</Text>
</View>
</ScrollView>
</TabBarIOS.Item>
</TabBarIOS>
);
}
}
//样式定义
const styles = StyleSheet.create({
flex: {
flex: 1
},
message: {
alignItems: 'center',
marginLeft: 5,
marginRight: 5
},
message_title: {
fontSize: 18,
color: '#18B5FF',
marginBottom: 5
}
});
AppRegistry.registerComponent('HelloWorld', () => App);
全部评论(0)