在 React Native 中使用Iconfont自定义图标

前提准备

    1.安装react-native-vector-icons 

yarn add react-native-vector-icons

    2.如果你想使用库中的默认字体文件,则需要链接资源库(可选)

react-native link react-native-vector-icons

    3.重新运行项目

    4.测试运行一下代码在任意组件 (这里使用的是react-native-vector-icons库自带的图标

import Icon from 'react-native-vector-icons/FontAwesome';

 

使用Iconfont字体

    1.选择要使用到的自定义字体加入到自己的项目中

    2.将项目打包下载到本地

在 React Native 中使用Iconfont自定义图标_第1张图片

    3.解压项目文件

在 React Native 中使用Iconfont自定义图标_第2张图片

    4.在xcode中引入字体文件

        a. 打开 xcode,将 Iconfont.ttf 文件拖入 RN 项目的 Resource 文件夹,注意必须勾选 ‘Create groups’ 和 ‘Add to targets’ 选项

        在 React Native 中使用Iconfont自定义图标_第3张图片

        b.在 xcode 点击项目名,再点击 Info tab, 手动添加相应字段

         在 React Native 中使用Iconfont自定义图标_第4张图片

        xcode配置完成

    5.安卓下引入字体包

        Android 平台中只需将 fontello.ttf 文件放入 android/app/src/main/assets/fonts文件夹即可

    6.将iconfont.ttf文件放到我们的RN项目中去 (可以放在项目的assets/font下)

        在 React Native 中使用Iconfont自定义图标_第5张图片

    7.创建iconfont.json文件,放入相同的文件目录下 (这一步很重要)

         我们创建自定义图标是通过 createIconSet 这个方法实现的, 这个方法需要一个glyphMap参数, 这里创建的json文件就是glyphMap的具体实现.

       glyphMap整么来呢 看这里 (刚刚下载的字体包文件中的html文件,直接打开即可)

        在 React Native 中使用Iconfont自定义图标_第6张图片

        其中e600, e602是图标对应的16进制unicode我们需要的是10进制,所以把它转换一下, 下面使用的是js

parseInt("e600", 16)
58880

        我们这里创建的iconfont.json的最终形式就是这样

{
  "alipay": 58880,
  "balance": 58882
}

        alipay代表待会儿要使用时候传进去的name参数

        58880表示刚刚16进制转换的值

    8.创建Iconfont组件

import createIconSet from 'react-native-vector-icons/lib/create-icon-set';
import glyphMap from '../assets/Iconfont.json';

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

export default iconSet;

    9.使用iconfont组件

import React, { Component } from 'react';
import {
  Text,
  View,
  StyleSheet,
  Button,
} from 'react-native';
import Iconfont from '../common/Iconfont';

export default class MyPage extends Component {
  constructor(props) {
    super(props);
    this.state = { };
  }



  render() {
    return (
      
        
      
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: 'pink',
  },
});

完成!

你可能感兴趣的:(React,整理)