第一步 下载 Iconfont-阿里巴巴矢量图

登录网址后,把需要的图标添加到库,如下:

如何把iconfont导入到react-native expo 中

然后下载到本地。(注:本人google浏览器出现下载的压缩包为空的现象,使用其他浏览器才下载成功)

有如下内容:

如何把iconfont导入到react-native expo 中

第二步 创建genJson.js 文件,转化css文件为json

创建genJson.js 文件:

const path = require('path');
const oldPath = path.resolve(__dirname, 'iconfont.css');
const newPath = path.resolve(__dirname, 'iconfont.json');

var gen = module.exports = function () {
    const readline = require('readline');
    const fs = require('fs');

    const fRead = fs.createReadStream(oldPath);
    const fWrite = fs.createWriteStream(newPath, {flags: 'w+', defaultEncoding: 'utf8'});
    const objReadLine = readline.createInterface({
        input: fRead
    });

    var ret = {};

    objReadLine.on('line', line => {
        line = line && line.trim();
        if( !line.includes(":before") || !line.includes("content") ) return;
        var keyMatch = line.match(/\.(.*?):/);
        var valueMatch = line.match(/content:.*?\\(.*?);/);
        var key = keyMatch && keyMatch[1];
        var value = valueMatch && valueMatch[1];
        value = parseInt(value, 16);
        key && value && (ret[key] = value);
    });

    objReadLine.on('close', () => {
        console.log('readline close');
        fWrite.write(JSON.stringify(ret), 'utf8');
        });
};

gen();

将iconfont.css 文件和 genJson.js 放置到同一个文件夹,运行node:

node genJson.js

获得iconfont.json文件,内容如下:

如何把iconfont导入到react-native expo 中

第三步 放置 iconfont.ttf 、iconfont.json到项目中

 把 inconfont.json 放到项目目录: node_modules/@expo/vector-icons/vendor/react-native-vector-icons/glyphmaps

iconfont.ttf 放到项目目录:node_modules/@expo/vector-icons/fonts

 

第四步 创建 iconfont.js 文件,

在项目目录 node_modules/@expo/vector-icons 下创建文件 iconfont.js:

import createIconSet from './createIconSet';
import glyphMap from './vendor/react-native-vector-icons/glyphmaps/iconfont.json';

export default createIconSet(glyphMap, "iconfont", require('./fonts/iconfont.ttf'));

找到项目目录下 node_modules/@expo/vector-icons/index.js 文件,加上内容:

如何把iconfont导入到react-native expo 中

 

最后一步 使用 iconfont

打开demo_fontclass.html ,可以看到下载了这几个图标:

如何把iconfont导入到react-native expo 中

这里使用第一个图标 icon-changjingguanli 为示例:

import React from "react";
import { View, Text, StyleSheet } from "react-native";
import { Icon } from 'expo';
//或者这样子导入 import { Iconfont } from '@expo/vector-icons'; 
// 就可以直接使用 Iconfont 组件

export default class ProfileScreen extends React.Component {
    render() {
        return (
            <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
                <Text>Details!</Text>
                <Icon.Iconfont
                    name="icon-changjingguanli"
                    size={26}
                    style={{ marginBottom: -3 }}
                    color="red"
                />
            </View>
        );
    }
}

效果如下:

如何把iconfont导入到react-native expo 中

使用expo的字体

仔细观察expo的文件目录,可以发现 expo已经按照了一些字体:

如何把iconfont导入到react-native expo 中

比如要使用 FontAwesome 的字体,使用方法如下:

import React from "react";
import { View, Text, StyleSheet } from "react-native";
import FontAwesome from "@expo/vector-icons/FontAwesome";

export default class ProfileScreen extends React.Component {
    render() {
        return (
            <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
                <Text>Details!</Text>
                <FontAwesome
                    name="android"
                    size={26}
                    style={{ marginBottom: -3 }}
                    color="red"
                />
            </View>
        );
    }
}

 

相关文章:

  • 2021-09-25
  • 2022-12-23
  • 2022-12-23
  • 2022-01-11
  • 2021-11-19
  • 2021-09-08
  • 2022-02-04
猜你喜欢
  • 2021-07-28
  • 2022-12-23
  • 2022-12-23
  • 2021-05-28
  • 2022-12-23
  • 2022-12-23
  • 2021-11-04
相关资源
相似解决方案