---恢复内容开始---
一、简介
顾名思义tab切换的效果,很常见的组件功能,在微信微博底部导航功能。
二、 TabBarIOS与 TabBarIOS.Item
见字知意,显然TabBarIOS是包含有TabBarIOS.Item子组件的。官网代码示之:
render: function () {
return (
< TabBarIOS
unselectedTintColor ="yellow"
tintColor ="white"
barTintColor ="darkslateblue">
< TabBarIOS.Item
title ="Blue Tab"
icon ={{uri: base64Icon, scale: 3 }}
selected ={ this .state.selectedTab === 'blueTab' }
onPress ={() => {
this .setState({
selectedTab: 'blueTab' ,
});
}} >
{ this ._renderContent('#414A8C', 'Blue Tab' )}
</TabBarIOS.Item>
< TabBarIOS.Item
systemIcon ="history"
badge ={ this .state.notifCount > 0 ? this .state.notifCount : undefined}
selected ={ this .state.selectedTab === 'redTab' }
onPress ={() => {
this .setState({
selectedTab: 'redTab' ,
notifCount: this .state.notifCount + 1 ,
});
}} >
{ this ._renderContent('#783E33', 'Red Tab', this .state.notifCount)}
</TabBarIOS.Item>
< TabBarIOS.Item
icon ={require('./flux.png' )}
selectedIcon ={require('./relay.png' )}
renderAsOriginal
title ="More"
selected ={ this .state.selectedTab === 'greenTab' }
onPress ={() => {
this .setState({
selectedTab: 'greenTab' ,
presses: this .state.presses + 1
});
}} >
{ this ._renderContent('#21551C', 'Green Tab', this .state.presses)}
</TabBarIOS.Item>
</TabBarIOS>
);
三、TabBarIOS的API
我们要对组件进行修改先要看有哪些可能用到的API。
barTintColor String 标签栏的背景颜色 style {} 可以自定义一些样式 tintColor String 当前被选中标签的颜色 unselectedItemTintColor String 没有被选中的标签的颜色 IOS10以上才有效 translucent Boolean 标签栏是否需要半透明化三、TabBarIOS. Item 的API
我们从上面的api可以得知TabBarIOS的属性设置是对标签栏整体的控制。我们如果想单独为标签设置则需要在Item里设置。
badge String|Number 标签右上角的气泡(形如微信里未读消息样式) icon Image.propTypes.source 给当前标签指定一个自定义的图标。如果定义了 systemIcon 属性, 这个属性会被忽略。 onPress Function 触屏点击是触发的事件,此时一般修改组件的状态来使得 selected={true} 。 selected Boolean 属性决定子试图是否可见(空白页面很可能是没有任何标签被选中或者没有引入子组件) selectedIcon Image.propTypes.source 被选中时显示的自定义图标 style {} 自定义的属性 title string 在图标下面显示的标题文字。如果定义了 systemIcon 属性,这个属性会被忽略。 systemIcon enum 预定义的系统图标(如果你使用了此属性,title和selectedIcon都会被覆盖为系统定义的值。)
四、结合上面的API自己动手写个
import React, {Component} from 'react' ;
import {
AppRegistry,
View,
StyleSheet,
AlertIOS,
Text,
TabBarIOS,
NavigatorIOS,
ScrollView,
TextInput,
ListView,
Image
} from 'react-native' ;
const Icon = require('react-native-vector-icons/Ionicons' )
import List from './src/List/index' ;
import Publish from './src/Publish/index' ;
import Setting from './src/Setting/index' ;
export default class AwesomeProject extends Component {
constructor(props) {
super(props);
this .state = {
selectedTab: 'Creation'
}
}
render() {
return (
< TabBarIOS
barTintColor ="#222222"
tintColor ="#ffcd32"
style = {styles.container}
>
< Icon.TabBarItem
title ="主页"
iconName ="ios-home-outline"
selectedIconName ="ios-home"
selected = { this .state.selectedTab === 'CreateList' }
onPress ={() => {
this .setState({
selectedTab: 'CreateList'
})
}}
>
<List/>
</Icon.TabBarItem>
< Icon.TabBarItem
title ="发布"
iconName ="ios-add-circle-outline"
selectedIconName ="ios-add-circle"
selected = { this .state.selectedTab === 'Creation' }
onPress ={() => {
this .setState({
selectedTab: 'Creation'
});
}}
>
<Publish />
</Icon.TabBarItem>
< Icon.TabBarItem
title ="个人中心"
iconName ="ios-person-outline"
selectedIconName ="ios-person"
badge ="2"
selected = { this .state.selectedTab === 'Setting' }
onPress ={() => {
this .setState({
selectedTab: 'Setting'
})
}}
>
<Setting/>
</Icon.TabBarItem>
</TabBarIOS>
)
}
}
const styles = StyleSheet.create({
container: {
backgroundColor: '#222222'
}
});
AppRegistry.registerComponent( 'AwesomeProject', () => AwesomeProject);
查看更多关于React Native之TabBarIOS组件的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did222553