ReactNative之TabBariOS和TabNavigator

ReactNative之TabBariOS和TabNavigator

ReactNaive相關文章

1. React Native 中文網

2. GitHub相關代碼地址

3. ReactNaive之CSS和Flex布局

4. ReactNative之基本組件

5. React Naive之ScrollView和ListView

6. React Native之導航組件NavigatorIOS和Navigator

7. ReactNative之TabBariOS和TabNavigator


注: 本文主要總結的是ReactNative的一些簡單語法, 大部分內容總結自袁大神的文章

效果圖

底部選項條.png

一. TabBarIOS

  • 底部選項條, 不能跨平臺,只能iOS端使用
  • 添加如下代碼, 就會出現(xiàn)底部選項條
    return (
        <TabBarIOS></TabBarIOS>
    )        

1. 相關屬性

barTintColor='yellow'
//標簽欄的背景顏色

tintColor='#ed7f30'
//當前被選中的標簽圖標的顏色

unselectedItemTintColor='#a19a9a'
//當前沒有被選中的標簽圖標的顏色。僅在iOS 10及以上版本有效

translucent={false} 
//一個布爾值,決定標簽欄是否需要半透明化
//默認為true, 有透明效果

二. 選項卡: TabBarIOS.Item

  • TabBarIOS: 只是表示底部的一個選項條
  • TabBarIOS.Item: 才代表每一個選項卡
  • TabBarIOS.Item必須包裝一個View,作為點擊tabBar按鈕,切換的View
                <TabBarIOS.Item title='首頁'
                                icon={{uri:'btn_home_normal'}}
                                selectedIcon={{uri:'btn_home_selected'}}
                                onPress={()=>{
                                    this.setState({
                                        selectedIndex:0
                                    })
                                }}
                                selected={this.state.selectedIndex == 0}
                >
                    <View style={{backgroundColor:'red', flex:1}}/>
                </TabBarIOS.Item>

1. 常用屬性

badge string, number 
badge='我'
badge={12}
//在圖標右上角顯示一個紅色的氣泡, 可接受string和number類型

title string 
//在圖標下面顯示的標題文字。如果定義了systemIcon屬性,這個屬性會被忽略。

icon Image.propTypes.source 
//給當前標簽指定一個自定義的圖標。如果定義了systemIcon屬性, 這個屬性會被忽略。

selectedIcon Image.propTypes.source 
//當標簽被選中的時候顯示的自定義圖標。如果定義了systemIcon屬性,這個屬性會被忽略。如果定義了icon而沒定義這個屬性,在選中的時候圖標會染上藍色。

onPress function 
//當此標簽被選中時調用。你應該修改組件的狀態(tài)來使得selected屬性為true

selected bool 
//這個屬性決定了子視圖是否可見。如果你看到一個空白的頁面,很可能是沒有選中任何一個標簽

systemIcon enum('bookmarks', 'contacts', 'downloads', 'favorites', 'featured', 'history', 'more', 'most-recent', 'most-viewed', 'recents', 'search', 'top-rated') 
//一些預定義的系統(tǒng)圖標。注意如果你使用了此屬性,標題和自定義圖標都會被覆蓋為系統(tǒng)定義的值。
  • 只要設置對應的tabBarItem的selected為true,就會自動跳轉到對應界面
    • 注意:tabBarItem的selected屬性不能寫死,可以搞個角標記錄當前選中那個角標
  • 監(jiān)聽tabBarItem的點擊,修改selected屬性
  • 相關示例代碼
export default class App extends Component<{}> {
    constructor(props){
        super(props)
        this.state = {
            selectedIndex:0
        }
    }

    // 當一個組件要顯示的時候,就會自動調用render,渲染組件
    render() {
        return (
            <TabBarIOS tintColor='#ed7f30'>
                <TabBarIOS.Item title='首頁'
                         icon={{uri:'btn_home_normal'}}
                                selectedIcon={{uri:'btn_home_selected'}}
                                badge='我'
                                onPress={()=>{
                                    this.setState({
                                        selectedIndex:0
                                    })
                                }}
                                selected={this.state.selectedIndex == 0}
                >
                    <View style={{backgroundColor:'red', flex:1}}/>
                </TabBarIOS.Item>

                <TabBarIOS.Item title='直播'
                                icon={{uri:'btn_column_normal'}}
                                selectedIcon={{uri:'btn_column_selected'}}
                                badge={12}
                                onPress={()=>{
                                    this.setState({
                                        selectedIndex:1
                                    })
                                }}
                                selected={this.state.selectedIndex == 1}
                >
                    <View style={{backgroundColor:'yellow', flex:1}}/>
                </TabBarIOS.Item>
            </TabBarIOS>
        )
    }
}

三. TabNavigator

  • TabBarIOS只能用于iOS平臺,如果在安卓上也需要有TabBar,就不能使用TabBarIOS。
  • TabNavigator:一個跨平臺的TabBar第三方框架組件,可以用于iOS和安卓平臺
  • TabNavigator地址

1. 安裝和導入

1-1. 安裝第三方框架

yarn add react-native-tab-navigator

1-2. 導入框架

import TabNavigator from 'react-native-tab-navigator';

2. TabNavigator常用屬性

屬性 默認值 類型 描述
sceneStyle inherited object (style) 定義渲染的場景
tabBarStyle inherited object (style) 為TabBar定義樣式
tabBarShadowStyle inherited object (style) 為TabBar定義陰影樣式
hidesTabTouch false boolean 禁用選項卡的onPress

3. TabNavigator.Item常用屬性

屬性 默認值 類型 描述
renderIcon none function 選項卡圖標
renderSelectedIcon none function 選項卡選中狀態(tài)圖標
badgeText none string or number 圖標右上角顯示
title none string tabbar標題
titleStyle inherited style 標題樣式
selectedTitleStyle inherited style 選中狀態(tài)標題樣式
tabStyle inherited style 選項卡樣式
hidesTabTouch false boolean 是否選中該tabbar
onPress none function 選項卡的點擊方法
allowFontScaling false boolean 允許標題的字體縮放
  • 使用示例
render() {
        return (
            <TabNavigator>
                <TabNavigator.Item title='首頁'
                                   selected={this.state.selectedIndex == 0}
                                   titleStyle={{color:'#9d9d9d'}}
                                   selectedTitleStyle={{color:'#ed7f30'}}
                                   badgeText='首頁'
                                   allowFontScaling={false}
                                   renderIcon={()=>
                                       <Image source={{uri:'btn_home_normal'}} style={styles.iconStyle}/>
                                   }
                                   renderSelectedIcon={()=>
                                       <Image source={{uri:'btn_home_selected'}} style={styles.iconStyle}/>
                                   }
                                   onPress={()=>
                                       this.setState({
                                           selectedIndex:0
                                       })
                                   }
                >
                    <View style={[styles.viewStyle, {backgroundColor:'red'}]}>
                        <Text>首頁</Text>
                    </View>
                </TabNavigator.Item>

                <TabNavigator.Item title='我的'
                                   selected={this.state.selectedIndex == 1}
                                   titleStyle={{color:'#9d9d9d'}}
                                   selectedTitleStyle={{color:'#ed7f30'}}
                                   badgeText={10}
                                   renderIcon={()=>
                                       <Image source={{uri:'btn_user_normal'}} style={styles.iconStyle}/>
                                   }
                                   renderSelectedIcon={()=>
                                       <Image source={{uri:'btn_user_selected'}} style={styles.iconStyle}/>
                                   }
                                   onPress={()=>
                                       this.setState({
                                           selectedIndex:1
                                       })
                                   }
                >
                    <View style={[styles.viewStyle, {backgroundColor:'green'}]}>
                        <Text>我的</Text>
                    </View>

                </TabNavigator.Item>
            </TabNavigator>
        )
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377

推薦閱讀更多精彩內容

  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議。它實...
    香橙柚子閱讀 24,010評論 8 183
  • 一個好的團隊,危急時刻的強大凝聚力是最好的體現(xiàn),那個才是每個團隊隊員所期望的“家的感覺”。
    傾黛閱讀 87評論 0 0
  • 離別家鄉(xiāng)歲月多,近來人事半消磨。 惟有門前鏡湖水,春風不改舊時波。 我既不屬于故鄉(xiāng),也不屬于遠方。
    吾冰閱讀 346評論 0 2
  • 使用Visual Studio開發(fā)Web網頁的時候有這樣的情況:想要在調試模式下讓局域網的其他設備進行訪問,以便進...
    諸葛_小亮閱讀 1,238評論 0 4
  • 那一刻的感動 9月10日,在我心里,只不過是專屬教師的一個節(jié)日而已,可是2012年的教師節(jié)卻讓感動的不知所措,讓我...
    文水wenshui閱讀 370評論 0 2