亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

React Native學習教程之自定義NavigationBar詳解

2020-07-26 02:39:26
字體:
來源:轉載
供稿:網友

前言

在剛開始學習React Native的時候,版本還是0.20,問題一大堆,Navigation這個問題更是很多,首先,是NavigationBar的問題,NavigationIOS有NavigationBar,Navigation卻需要自定義一個,最后,我想了想,還是自定義一個view,豈不更好,現在新公司不用RN,我正好有點時間,就把自定義的NavigationBar分享給大家。好了少廢話,上代碼;

示例代碼

// NavigationBar 導航條的自定義封裝 // create by 小廣 'use strict'; import React, { Component,PropTypes } from 'react'; import {  Image,  Text,  View,  Platform,  TouchableOpacity, } from 'react-native';  import styles from './NavigationBarStyle'  // 導航條和狀態欄的高度 const STATUS_BAR_HEIGHT = 20 const NAV_BAR_HEIGHT = 44  export default class NavigationBar extends Component {  static defaultProps = {  title: 'title',  titleTextColor: '#383838',  titleViewFunc () {},  barBGColor: '#f8f8f8',  barOpacity: 1,  barStyle: 0,  barBorderBottomColor: '#D4D4D4',  barBorderBottomWidth: 0.8,  statusbarShow: true,  leftItemTitle: '',  leftTextColor: '#383838',  leftItemFunc () {},  rightItemTitle: '',  rightTextColor: '#383838',  rightItemFunc () {},  //leftImageSource: require('./nav_back.png'),  };  static propTypes = {  title: PropTypes.string,   // nav標題  titleTextColor: PropTypes.string, // nav標題顏色  titleView: PropTypes.node,  // nav自定義標題View(節點)  titleViewFunc: PropTypes.func, // nav的titleView點擊事件  barBGColor: PropTypes.string, // Bar的背景顏色  barOpacity: PropTypes.number, // Bar的透明度  barStyle: PropTypes.number, // Bar的擴展屬性,nav樣式(暫未使用)  barBorderBottomColor: PropTypes.string, // Bar底部線的顏色  barBorderBottomWidth: PropTypes.number, // Bar底部線的寬度  statusbarShow: PropTypes.bool,  // 是否顯示狀態欄的20高度(默認true)  leftItemTitle: PropTypes.string, // 左按鈕title  leftImageSource: PropTypes.node, // 左Item圖片(source)  leftTextColor: PropTypes.string, // 左按鈕標題顏色  leftItemFunc: PropTypes.func,  // 左Item事件  rightItemTitle: PropTypes.string, // 右按鈕title  rightImageSource: PropTypes.node, // 右Item圖片(source)  rightTextColor: PropTypes.string, // 右按鈕標題顏色  rightItemFunc: PropTypes.func,  // 右Item事件  };   render() {  // 判斷左Item的類型  var onlyLeftIcon = false; // 是否只是圖片  if (this.props.leftItemTitle && this.props.leftImageSource) {   onlyLeftIcon = true;  } else if (this.props.leftImageSource) {   onlyLeftIcon = true;  }   // 左側圖片title都沒有的情況下  var noneLeft = false;  if (!(this.props.leftItemTitle.length > 0) && !(this.props.leftImageSource)) {   noneLeft = true;  }   // 判斷是否自定義titleView  var hasTitleView = false;  if (this.props.title && this.props.titleView) {   hasTitleView = true;  } else if (this.props.titleView) {   hasTitleView = true;  }   // 判斷右Item的類型  var onlyRightIcon = false; // 是否只是圖片  if (this.props.rightItemTitle && this.props.rightImageSource) {   onlyRightIcon = true;  } else if (this.props.rightImageSource) {   onlyRightIcon = true;  }   // 右側圖片title都沒有的情況下  var noneRight = false;  if (!(this.props.rightItemTitle.length > 0) && !(this.props.rightImageSource)) {   noneRight = true;  }   // 判斷是否顯示20狀態欄高度  let showStatusbar = this.props.statusbarShow;  if (Platform.OS === 'android') {   // 安卓不顯示   showStatusbar = false;  }  return (   <View style={styles.nav_barView}>   <View style={[styles.nav_bar,    {    backgroundColor: this.props.barBGColor,    height: showStatusbar ? NAV_BAR_HEIGHT + STATUS_BAR_HEIGHT : NAV_BAR_HEIGHT,    opacity: this.props.barOpacity    },    showStatusbar ? { paddingTop: STATUS_BAR_HEIGHT } : {}, this.props.barStyle]}>    <View style={styles.nav_ItemView}>    { // 左側item     !noneLeft     ? <TouchableOpacity      style={styles.nav_leftItem}      onPress={this.props.leftItemFunc}>      { // 左側是圖片還是文字      onlyLeftIcon      ? <Image style={styles.nav_leftImage}         source={this.props.leftImageSource}/>      : <Text style={[styles.nav_leftTitle,{color: this.props.leftTextColor}]}>       {this.props.leftItemTitle}       </Text>      }     </TouchableOpacity>     : null    }    </View>    {    hasTitleView    ? <TouchableOpacity style={styles.nav_titleView} onPress={this.props.titleViewFunc}>     {this.props.titleView}     </TouchableOpacity>    : <View style={styles.nav_titleView}>     <Text style={[styles.nav_title,{color:this.props.titleTextColor}]}>      {this.props.title}     </Text>     </View>    }    <View style={styles.nav_ItemView}>    { // 右側item     !noneRight     ? <TouchableOpacity      style={styles.nav_rightItem}      onPress={this.props.rightItemFunc}>      { // 右側是圖片還是文字      onlyRightIcon      ? <Image style={styles.nav_rightImage}         source={this.props.rightImageSource}/>      : <Text style={[styles.nav_rightTitle,{color: this.props.rightTextColor}]}>       {this.props.rightItemTitle}       </Text>      }     </TouchableOpacity>     : null    }    </View>   </View>   <View style={{height:this.props.barBorderBottomWidth,backgroundColor:this.props.barBorderBottomColor}}></View>   </View>   );  } } 

css樣式:

// NavigationBarStyle 導航條的樣式 // create by 小廣 'use strict'; import {  StyleSheet, } from 'react-native';  export default StyleSheet.create({  // navBar  nav_barView:{  justifyContent: 'center',  },  nav_bar: {  //flex:1,  flex: 1,  flexDirection:'row',  justifyContent: 'center',  },   // 標題純title  nav_title: {  fontSize:17,  },   // titleView  nav_titleView: {  flex: 1,  alignItems: 'center',  justifyContent: 'center',  },   nav_ItemView:{  width:80,  justifyContent: 'center',  },   // 左Item  nav_leftItem: {  marginLeft:8,  flex:1,  justifyContent: 'center',  alignSelf: 'flex-start',  //backgroundColor:'#f00',  },   // 左Item為title  nav_leftTitle: {   marginRight:5,   marginLeft:5,   fontSize: 14,  },   // 左圖片  nav_leftImage: {   margin:10,   resizeMode:'contain',  },   // 右Item  nav_rightItem: {   marginRight:8,   flex:1,   justifyContent: 'center',   alignSelf: 'flex-end',   //backgroundColor:'#3393F2',  },   // 右Item為title  nav_rightTitle: {   marginRight:5,   marginLeft:5,   fontSize: 14,  },   // 右圖片  nav_rightImage:{   margin:10,   resizeMode:'contain',   //backgroundColor:'#f00',  },  //resizeMode:'contain', }); 

用法:引入之后

import NavigationBar from '你的存放路徑/NavigationBar.js'

class XGRNDemo extends Component {   _leftItemAction() {  console.log('左側按鈕點擊了');  }   _rightItemAction() {  console.log('右側按鈕點擊了');  }   render() {  return (   <View style={styles.container}>   <NavigationBar    title='這個是標題'    leftImageSource={require('./nav_back.png')}    rightItemTitle='按鈕'    rightTextColor='#3393F2'    leftItemFunc={this._leftItemAction.bind(this)}    rightItemFunc={this._rightItemAction.bind(this)}/>   <ScrollView style={styles.container}    automaticallyAdjustContentInsets={false}    keyboardShouldPersistTaps={true}    keyboardDismissMode='on-drag'    >    <Text style={styles.welcome}>    Welcome to React Native!    </Text>    <Text style={styles.instructions}>    To get started, edit index.ios.js    </Text>    <Text style={styles.instructions}>    Press Cmd+R to reload,{'/n'}    Cmd+D or shake for dev menu    </Text>   </ScrollView>   </View>  );  } }  const styles = StyleSheet.create({  container: {  flex: 1,  backgroundColor: '#F5FCFF',  },  welcome: {  fontSize: 20,  textAlign: 'center',  margin: 10,  },  instructions: {  textAlign: 'center',  color: '#333333',  marginBottom: 5,  }, }); 

其中可以自定義的屬性

title: PropTypes.string,   // nav標題 titleTextColor: PropTypes.string, // nav標題顏色 titleView: PropTypes.node,  // nav自定義標題View(節點) titleViewFunc: PropTypes.func, // nav的titleView點擊事件 barBGColor: PropTypes.string, // Bar的背景顏色 barOpacity: PropTypes.number, // Bar的透明度 barStyle: PropTypes.number, // Bar的擴展屬性,nav樣式(暫未使用) barBorderBottomColor: PropTypes.string, // Bar底部線的顏色 barBorderBottomWidth: PropTypes.number, // Bar底部線的寬度 statusbarShow: PropTypes.bool,  // 是否顯示狀態欄的20高度(默認true) leftItemTitle: PropTypes.string, // 左按鈕title leftImageSource: PropTypes.node, // 左Item圖片(source) leftTextColor: PropTypes.string, // 左按鈕標題顏色 leftItemFunc: PropTypes.func,  // 左Item事件 rightItemTitle: PropTypes.string, // 右按鈕title rightImageSource: PropTypes.node, // 右Item圖片(source) rightTextColor: PropTypes.string, // 右按鈕標題顏色 rightItemFunc: PropTypes.func,  // 右Item事件 

效果如圖:

ps:之前想上傳到npm服務器,但是自己沒搞成功,就這了吧..

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频网址| 久久亚洲春色中文字幕| 久久影院中文字幕| 亚洲三级免费看| 日韩国产中文字幕| 国产成人精品一区二区在线| 欧美高清视频一区二区| 欧美老肥婆性猛交视频| 日韩最新在线视频| 成人午夜在线影院| 91久久国产婷婷一区二区| 午夜精品久久久久久久久久久久| 亚洲最大av网| 欧美成人精品一区二区三区| 国产精品色婷婷视频| 欧美黑人xxxx| 在线观看免费高清视频97| 精品久久久久久国产| 91精品国产综合久久久久久久久| 亚洲人线精品午夜| 亚洲第一中文字幕| 亚洲欧洲一区二区三区久久| 亚洲女人天堂成人av在线| 中文欧美在线视频| 富二代精品短视频| 日本高清不卡在线| 欧美又大粗又爽又黄大片视频| 久久久久久12| 久久久噜噜噜久噜久久| 欧美成人免费播放| 性日韩欧美在线视频| 亚洲2020天天堂在线观看| 国产欧美精品一区二区三区介绍| 亚洲精品色婷婷福利天堂| 一区二区欧美激情| 欧美视频在线观看免费网址| 成人妇女免费播放久久久| 91亚洲精品在线| 一个人看的www久久| 久99九色视频在线观看| 中文字幕综合一区| 亚洲iv一区二区三区| 欧美激情国产精品| 1769国内精品视频在线播放| 亚洲人成自拍网站| 日韩天堂在线视频| 国产精品视频久久久| 国产成人精品亚洲精品| 7m精品福利视频导航| 国产欧美精品一区二区三区介绍| 国产亚洲欧美视频| 久久久久久综合网天天| 91av视频在线观看| 日韩av手机在线观看| 亚洲精品视频二区| 国产精品第100页| 亚洲最大的av网站| 国产精品网红福利| 92看片淫黄大片欧美看国产片| 国产精品美女网站| 日av在线播放中文不卡| 色偷偷av一区二区三区乱| 欧美成年人视频网站| 国产精品黄页免费高清在线观看| 亚洲乱码一区av黑人高潮| 91精品免费看| 91精品国产91久久| 日韩电影大片中文字幕| 韩国国内大量揄拍精品视频| 久久久久这里只有精品| 欧美色道久久88综合亚洲精品| www.日韩视频| 国产精品美女www爽爽爽视频| 中文字幕日韩欧美在线视频| 欧美电影免费观看高清| 久久久久一本一区二区青青蜜月| 伊是香蕉大人久久| 最新日韩中文字幕| 中文字幕国产亚洲2019| 欧日韩在线观看| 久久久久久12| 成人免费看黄网站| 日本韩国在线不卡| 亚洲第一网中文字幕| 成人国产精品免费视频| 国内精品一区二区三区四区| 亚洲淫片在线视频| 97超碰国产精品女人人人爽| 日韩精品在线电影| 国产成人精品av在线| 成人日韩av在线| 亚洲一区二区精品| 日韩一中文字幕| 国产成人综合亚洲| 日韩美女免费线视频| 精品福利免费观看| 91av网站在线播放| 亚洲深夜福利网站| 国产丝袜视频一区| 亚洲精品综合精品自拍| 日韩精品丝袜在线| 91免费国产视频| 日韩电影中文字幕一区| 亚洲性夜色噜噜噜7777| 欧美电影在线观看高清| 中文字幕日韩欧美在线视频| 国产精品久久久久久久一区探花| 国产香蕉精品视频一区二区三区| 欧美在线视频播放| 亚洲三级免费看| 亚洲一区中文字幕在线观看| 日产精品99久久久久久| 久久久久国色av免费观看性色| 精品久久久久久亚洲国产300| 日韩欧美成人区| 97在线观看免费高清| 中文字幕亚洲综合久久筱田步美| 亚洲激情成人网| 国产精品尤物福利片在线观看| 最近2019中文字幕一页二页| 91久久久久久久一区二区| 欧美中文在线视频| 欧美日韩在线免费观看| 欧美日韩亚洲精品内裤| 91亚洲精品久久久久久久久久久久| 亚洲综合中文字幕在线| 国产精品pans私拍| 欧美黑人极品猛少妇色xxxxx| 97香蕉久久夜色精品国产| 欧美日韩国产专区| 久青草国产97香蕉在线视频| 68精品久久久久久欧美| 国产精品电影一区| 日本aⅴ大伊香蕉精品视频| 国产在线观看精品一区二区三区| 久久99亚洲热视| 国产日韩换脸av一区在线观看| 亚洲欧美国产一本综合首页| 亚洲free性xxxx护士白浆| 55夜色66夜色国产精品视频| 日韩一区二区精品视频| 国产精品老牛影院在线观看| 粗暴蹂躏中文一区二区三区| 韩国精品久久久999| 欧美日韩国产中字| 亚洲精品视频网上网址在线观看| 欧美激情在线观看| 欧洲精品在线视频| 欧美精品videossex88| 国产精品色婷婷视频| 日韩av手机在线| 亚洲欧洲日产国码av系列天堂| 精品国产一区二区三区久久狼5月| 久久久久久国产| 久久6免费高清热精品| 国产成人精品a视频一区www| 欧美日韩ab片| 午夜精品久久久久久久白皮肤| 日韩视频中文字幕| 91久久嫩草影院一区二区| 成人黄色免费在线观看| 福利二区91精品bt7086| 成人淫片在线看| 中文字幕亚洲激情|