React Native學習之路(7) - Rect-Navigation導航器(全)+ (Rect-Native-vector-Icons ) + (Rect-Navtive-swiper)

React-Navigation包含三類組件:

  • (1) StackNavigator:用來跳轉(zhuǎn)頁面和傳遞參數(shù) (stack是堆疊的意思,頁面一層層堆疊)
  • (2) TabNavigator:底部導航欄,用來在同一屏幕下切換不同界面
  • (3) DrawerNavigator:側(cè)滑導航欄盗飒,用于輕松設(shè)置帶抽屜導航的屏幕

(1) TabNavigator的使用:

  • (1) 安裝react-navigation
npm install react-navigation ---save
  • (2) 引入TabNavigator
import { TabNavigator } from 'react-navigation';
  • (3)TabNavigator的使用
const TabContainer = TabNavigator(
    {
        // 所要展示的組件
    },
    {
        // 配置項
    }
)

http://www.reibang.com/p/0ad6c348157a
http://www.reibang.com/p/7d435e199c96
http://blog.csdn.net/xiangzhihong8/article/details/71249167?ref=myread
(stackNavigator傳值必看)http://www.reibang.com/p/2af7b9a599ea
http://blog.csdn.net/sinat_17775997/article/details/66972413
http://www.reibang.com/p/c24dfe7831c1
示例代碼:

var App= TabNavigator({
          Home:{
              screen: HomePage,
              navigationOptions:{
                tabBarLabel: '主頁',
                tabBarIcon: ( { tintColor} ) => (
                      <Icon name="home" size={ 30 } color={ tintColor }></Icon>
                 )太示,
               tabBarVisible: true    //tatBar是否可見彬呻,當為false時冤竹,點擊會隱藏    
              }
          }
},{
    animationEnabled:true, //切換頁面時溶浴,是否有動畫效果
    swipeEnabled: true, //是否可以滑動切換Tab,滑動切換效果
    backBehavior: 'none' //按Back鍵是否跳轉(zhuǎn)到第一個tab(首頁)钉寝,none為不跳轉(zhuǎn)  (behavior是行為的意思)
    lazy: true   //是否根據(jù)需要懶惰呈現(xiàn)標簽弧呐,而不是提前闸迷,意思是在app打開的時候?qū)⒌撞繕撕灆谌考虞d,默認false,推薦為true
    initialRouteName: 'Home'  //第一次進入的界面

    tabBarPosition: 'bottom', //設(shè)置tabBar的位置俘枫,ios默認在底部腥沽,android默認在頂部。(屬性值:'top'鸠蚪,'bottom')
    tabBarOptions: {  //配置標簽欄的一些屬性(底部標簽欄)
        indicatorStyle:{ height:0 },  //標簽指示器的樣式對象(選項卡底部的行)巡球。(indicator是指示器的意思)安卓底部會多出一條線,可以將height設(shè)置為0來暫時解決這個問題邓嘹。
        activeTintColor: '#ff7454', // 文字和圖片選中顏色  (tint是上色的意思)
        inactiveTintColor: '#333', // 文字和圖片未選中顏色
        showIcon: true, //TabBar圖標是否顯示酣栈,默認不顯示,需要設(shè)置true才會顯示
        showLabel: true,//TabBar文字是否顯示汹押,默認顯示矿筝。
        style: { backgroundColor: 'white'},  //底部TabBar的樣式
        tabStyle:{ backgroundColor: '...'}
        labelStyle: { fontSize: 14 }, //底部TabBar文字大小
        iconStyle: { width:30, height:30},
        scrollEnabled: false //是否啟用可滾動選項卡 tabStyle:tab的樣式
    }
})
  • (4)tabNavigator怎么更換不同的圖片(實際開發(fā)中ui會給到不同狀態(tài)下的icon)
    Home: {
        screen: Home,  //對應的界面的名稱(組件名稱)
            navigationOptions:{   // 也可以寫在組件的static navigationOptions內(nèi)
            tabBarLabel: '主頁',
            tabBarIcon: ( { tintColor, focused } ) => (
                focused ?
                <Icon3 name="ios-home" size={36} color={tintColor}></Icon3>
                :
                <Icon name="home" size={34} color={tintColor}></Icon>
             )
        }
    }

(2) StackNavigator的使用

  • (1) 引入StackNavigator
import { StackNavigator } from 'react-navigation';
const Go = StackNavigator({
    Index: {
        screen: App,    //導航的頁面
        navigationOptions:{
            header:null   // 沒有頂部欄
        }
    },
    ListDetail: {
        screen: HomeDetail
    }
},{
    navigationOptions: {
        headerTitle: '返回',    //頂部欄的文字
        headerStyle:{
            height:50,        //頂部欄的高度
            backgroundColor: '#ff7454'
        },
       cardStack:{
            gesturesEnabled: true    //允許手勢滑動
       }
    },
    mode: 'card',
    headerMode: 'screen'   // 導航欄的顯示模式, screen: 有漸變透明效果, float: 無透明效果, none: 隱藏導航欄
});
  • (3) 使android的stackNavigator文字居中( 安卓默認在左邊,ios默認居中 )
(1)
-
在navigationOptions中設(shè)置headerTitleStyle的alignSelf為 ' center '即可解決棚贾。
-
static navigationOptions = ({navigation}) => ({
        headerTitle: '視頻頁',
        headerStyle:{
            backgroundColor:'white',
        },
        headerTitleStyle:{
            alignSelf:'center'
        }
    })
效果圖

(番外篇:代碼中用到了react-native-vector-icons所以這里插入講解一下該矢量圖標庫的使用)

(3) react-native-vector-icons的使用(for安卓):

  • (1) 安裝react-native-vector-icons
npm install react-native-vector-icons --save  (安裝時記得關(guān)掉服務(wù)器窖维,這里有坑)
  • (2) 安卓rnpm
npm install rnpm -g
  • (3)鏈接rnpm
rnpm link
  • (4) 拷貝Fonts
把 node_modules/react-native-vector-icons/Fonts 目錄下字體文件全部拷到 
android/app/src/main/assets/fonts目錄 (注意fonts要小寫,這里有坑妙痹,沒有就自己建)
  • (5) 在項目根目錄中執(zhí)行 react-native run-android
  • (6) 引入圖標
import Icon from 'react-native-vector-icons/FontAwesome';
import Icon2 from 'react-native-vector-icons/Ionicons';
  • (6) 使用圖標
案例1
<Icon name="rocket" size={30} color="#900" />
案例2
YangSheng: {
      screen: YangSheng, //對應的界面的名稱(組件名稱)
      navigationOptions:{   // 也可以寫在組件的static navigationOptions內(nèi)
        tabBarLabel: '養(yǎng)生圈',
        tabBarIcon: ( { tintColor } ) => (
            <Icon2 name="statusnet" size={34} color={tintColor} />
            )
      }
    }

(番外篇:輪播圖組件)

(4) react-native-swiper 輪播組件

  • (1) 安裝
npm install react-native-swiper --save
  • (2) 引入
import Swiper from 'react-native-swiper';
render() {
        if(this.state.swiperShow){
            return(
                <View>
                    <Swiper height={ 300 }    //高度
                            showsButtons={false}  //顯示左右箭頭
                            autoplay={true}   //頁面自動跳轉(zhuǎn)
                            autoplayTimeout={ 2.5 }   //設(shè)置每個頁面自動滑動的停留時間
                            autoplayDirection={ true }  //允許控制圓點的方向
                            index = { 1 }    //從第幾頁開始播放
                            showsPagination={ true }  //顯示小圓點铸史,(pagination是頁碼的意思)
                            paginationStyle={{ position:'absolute',bottom:10}}
                            activeDotStyle={{backgroundColor:'#ff7454', width: 10, height: 10}}
                            horizontal={ true }   //滾動的內(nèi)容橫向排列
                    >
                        <View style={styles.win}>
                            <Image source={ require('../8.jpg')}  style={styles.img}/>
                        </View>
                        <View style={styles.win}>
                            <Image source={ require('../10.jpg')} style={styles.img2} />
                        </View>
                        <View style={styles.win}>
                            <Image source={ require('../8.jpg')}  style={styles.img}/>
                        </View>

                    </Swiper>
                </View>
            )
        }else {
            return (
                <View style={{height:200}}>
                    <Image source={ require('../8.jpg')}  />
                </View>
            );
        }
    }
}
 img2: {
        width: width,
        height:300,
        resizeMode: 'stretch'
    }
效果圖

QQ截圖20170718232441.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怯伊,一起剝皮案震驚了整個濱河市琳轿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耿芹,老刑警劉巖崭篡,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吧秕,居然都是意外死亡琉闪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門砸彬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颠毙,“玉大人,你說我怎么就攤上這事砂碉≈郏” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵绽淘,是天一觀的道長涵防。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么壮池? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任偏瓤,我火速辦了婚禮,結(jié)果婚禮上椰憋,老公的妹妹穿的比我還像新娘厅克。我一直安慰自己,他們只是感情好橙依,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布证舟。 她就那樣靜靜地躺著,像睡著了一般窗骑。 火紅的嫁衣襯著肌膚如雪女责。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天创译,我揣著相機與錄音抵知,去河邊找鬼。 笑死软族,一個胖子當著我的面吹牛刷喜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播立砸,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼掖疮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颗祝?” 一聲冷哼從身側(cè)響起浊闪,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吐葵,沒想到半個月后规揪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桥氏,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡温峭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了字支。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凤藏。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖堕伪,靈堂內(nèi)的尸體忽然破棺而出揖庄,到底是詐尸還是另有隱情,我是刑警寧澤欠雌,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布蹄梢,位于F島的核電站,受9級特大地震影響富俄,放射性物質(zhì)發(fā)生泄漏禁炒。R本人自食惡果不足惜而咆,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望幕袱。 院中可真熱鬧暴备,春花似錦、人聲如沸们豌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽望迎。三九已至障癌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辩尊,已是汗流浹背混弥。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留对省,地道東北人蝗拿。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像蒿涎,于是被迫代替她去往敵國和親哀托。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容

  • React Native優(yōu)秀博客劳秋,以及優(yōu)秀的Github庫列表(很多英文資料源自于[awesome-react-n...
    董董董董董董董董董大笨蛋閱讀 10,649評論 4 162
  • 簡短說明 收錄一些好用的RN第三方組件仓手,以方便日常的使用,大家有什么推薦的也可以跟我說玻淑,我加進去嗽冒。如有冒犯,可以聯(lián)...
    以德扶人閱讀 43,649評論 44 214
  • 持續(xù)更新中...... 一套企業(yè)級的 UI 設(shè)計語言和 React 實現(xiàn)补履。 https://mobile.ant....
    日不落000閱讀 5,723評論 0 35
  • 許是源于你昨天的那兩聲咳箫锤,于是夢里的你好似不舒服贬蛙,隱約我是在看一個“同鄉(xiāng)會”,扎著小辮子的大叔彈唱著一首陌生的歌曲...
    曉詠閱讀 302評論 0 0
  • 綠水待寒森谚攒,清風洗遠塵阳准。 八方誰看望,四野怎聽聞馏臭。 碗里饈重續(xù)野蝇,杯中酒再斟。 雖為他處客,亦是故鄉(xiāng)人绕沈。
    點下閱讀 145評論 2 6