react-native-vector-icons字體標簽的使用

1.需要引入的庫:

yarn add react-native-vector-icons
react-native link react-native-vector-icons

2.調(diào)用庫里面自帶的圖標
進入 node_mudules下的react-native-vector-icons庫的glyphmaps文件夾,發(fā)現(xiàn)有很多的json文件,每個json文件的內(nèi)容結(jié)構(gòu)如下:

{
"ios-add": 61698,
  "ios-add-circle": 61697,
  "ios-add-circle-outline": 61696,
  "ios-airplane": 61751,
  "ios-alarm": 62408,
  "ios-albums": 62410,
  "ios-alert": 61700,
  "ios-american-football": 61702,
  "ios-analytics": 62414,
  "ios-aperture": 61704,
  "ios-apps": 61706,
  "ios-appstore": 61708,
  "ios-archive": 61710,
}

這里面的key值就是需要調(diào)用的圖標的name,在App.js文件選取Ionicons.js調(diào)用:

//App.js
import React, {Component} from 'react';
import {StyleSheet,View} from 'react-native';
import Icons from 'react-native-vector-icons/Ionicons';
type Props = {};
export default class App extends Component<Props> {
  render() {
    return (
      <View style={styles.container}>
        <Icons name = 'ios-add' size={15} color='red'></Icons>
        <Icons name = 'ios-add-circle-outline' size={20} color='blue'></Icons>
        <Icons name = 'ios-add' size={15} color='blue'></Icons>
      </View>
    );
  }
}

效果如下:


效果1

3.調(diào)用自定義的svg圖片文件(以Iconfont-阿里巴巴圖標矢量庫為例)
進入Iconfont-阿里巴巴圖標矢量庫,將所需要的圖標加入購物車

步驟1

進入購物車后,點擊添加至項目
步驟2

或需要上傳自己的圖標文件,需要點擊右上角上傳按鈕,將自己的Svg文件拖入網(wǎng)站中,選擇保留顏色并提交即可。
上傳1

上傳2

上傳3

將項目中的圖標文件下載至本地
步驟3

解壓本地的文件夾

步驟4

打開node_mudules下的react-native-vector-icons庫,建立 與Iconicons.js文件同級的icpnfont.js文件:

//iconfont.js
import createIconSet from './lib/create-icon-set';
import glyphMap from './glyphmaps/iconfont.json';

const iconSet = createIconSet(glyphMap, 'iconfont', 'iconfont.ttf');

export default iconSet;

export const Button = iconSet.Button;
export const TabBarItem = iconSet.TabBarItem;
export const TabBarItemIOS = iconSet.TabBarItemIOS;
export const ToolbarAndroid = iconSet.ToolbarAndroid;
export const getImageSource = iconSet.getImageSource;

發(fā)現(xiàn)需要iconfont.ttf文件和iconfont.json文件,將下載解壓后的文件夾中的iconfont.ttf文件放入
react-native-vector-icons庫的Fonts文件夾下,在glyphmaps文件夾下面建立iconfont.json文件

//iconfont.json
{
    "message":59200,
    "drug":59199,
    "homePage":59197,
    "icon-card-wallet":58881,
    "icon-home":58882,
    "icon-phone":58883

}

文件中對象的鍵可以自定義,代表字體標簽的name,鍵值是字體標簽的十進制數(shù)值。
得到十進制數(shù)值的方法:
第一種:用字體圖標的字符碼中的十六進制碼直接轉(zhuǎn)換,然后手動添加到j(luò)son文件中(適用于數(shù)量較小的文件)

轉(zhuǎn)換方法1

忽略前面的&#x,后面的數(shù)值即為字體圖標的十六進制碼,將其轉(zhuǎn)換為十進制數(shù)值即可。轉(zhuǎn)換地址
第二種:當數(shù)量很多時,借助ptyon工具。由于使用react-native時mac上面已經(jīng)安裝過了python,直接使用即可。
首先,打開新的終端,安裝fonttools

pip install fonttools

然后在github上面克隆react-native-iconfont-mapper項目,并將iconfont.ttf文件放在項目的根目錄下,

轉(zhuǎn)換方法2-1

打開新的終端,進入react-native-iconfont-mapper目錄下,命令行運行

python iconfont-mapper.py iconfont.ttf iconfont.js

生成iconfont.js文件

轉(zhuǎn)換方法2-2

打開js文件,里面的數(shù)值就是我們json文件中需要的數(shù)值

//inconfont.js
var map = {"xiaoxi":"59200","icons-card-wallet":"58881",
"icons-home":"58882","icons-phone":"58883","shouye":"59197","yaopin":"59199",};
;module.exports = (name)=>String.fromCharCode(map[name]);
;module.exports.map = map;

在上面工作都做好后,在App.js文件中就可以調(diào)用了。

//App.js
import React, {Component} from 'react';
import {StyleSheet,View} from 'react-native';
import Icon from 'react-native-vector-icons/iconfont';
type Props = {};
export default class App extends Component<Props> {
  render() {
    return (
      <View style={styles.container}>
        <Icon name='message' size={15} color='red' ></Icon>
        <Icon name='drug' size={20} color='black'></Icon>
        <Icon name='homePage' size={25} color='blue'></Icon>
        <Icon name='icon-card-wallet' size={25} color='balck'></Icon>
        <Icon name='icon-home' size={30} color='red'></Icon>
        <Icon name='icon-phone' size={40} color='black'></Icon>
        <Icon name='icon-phone' size={40} color='red'></Icon>
      </View>
    );
  }
}
 

結(jié)果如下:


效果2

注:安卓運行記得將iconfont.ttd放在android->app->src->main->assets->fonts文件夾下,并重新安裝apk即可。
具體借鑒react-native-vector-icons的集成心得

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容