返回 导航

React / React Native

hangge.com

React Native - 标签组件(TabBarIOS)的使用详解

作者:hangge | 2017-02-23 08:03
标签栏在开发中常常会使用到,通常在 App 中都是通过 Tab 切换实现主体功能的切换。React Native 为我们提供了一个相关组件:TabBarIOS。下面通过样例演示如何使用。

1,TabBarIOS组件介绍

TabBarIOS 组件就是为了切换不同页面(视图或者路由)产生,目前只支持 iOS 系统。它还有个附属组件:TabBarIOS.Item,用来表示具体的某个标签页。

(1)TabBarIOS 组件属性
  • barTintColorTab 栏的背景颜色。
  • tintColor:当我们选中某个 Tab 时,该 Tab 的图标颜色。
  • translucentTab 栏是否透明。

(2)TabBarIOS.Item 组件属性
  • badge:红色的提示数字,可以用来做消息提醒。
  • iconTab 的图标,如果不指定,默认显示系统图标。
  • onPress:点击事件。当某个 Tab 被选中时,需要改变该组件的 select={true} 设置。
  • selected:是否选中某个 Tab。如果其值为 true,则选中并且显示子组件。
  • selectedIcon:选中状态的图标,如果为空,则将图标变为蓝色。
  • systemIcon:系统图标。是枚举类型,可选值有:bookmarkscontactsdownloadsfavoritesfeaturedhistorymoremost-recentmost-viewedrecentssearchtop-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)

回到顶部