前言

任何库的安装与使用都离不开官文,按照官方文档一步步操作可以规避大多数问题。不过很多库只有英文文档,想要完全参透需要时间。react-native-vector-icons 是最近学习React Native时所用到的一个图标库,这个库自带了十多种图标库,也可以将自定义图标稍作处理后在RN中使用。期间遇到了不少问题,尤其是解决IOS出现的error花了我不少时间,疯狂百度后发现其实操作很简单。

先上Github地址,有能力的可先看看:https://github.com/oblador/react-native-vector-icons

使用内置的图标库

  1. 先安装包 npm i react-native-vector-icons -D
  2. 项目中引入 import FontAwesome from 'react-native-vector-icons/FontAwesome'
  3. 使用 <FontAwesome name="home" size={26} />
  4. 在这里可以查看react-native-vector-icons中自带的图标库以及库中对应图标的name:https://oblador.github.io/react-native-vector-icons/

使用自定义图标(如阿里妈妈)

  1. 使用阿里妈妈图标库生成.ttf文件
  2. 将.ttf文件加入 node_modules/react-native-vector-icons/Fonts中
  3. 随便复制一份 字体名.js 文件 并改成自己要引入的,这个js文件可以就放在react-native-vector-icons包中,也可以从node_modules中拿出来放入项目里
  4. 然后跟使用内置库一样使用 import XXX from 'react-native-vector-icons/XXX.js'  <XXX name="wechat" size={26} />
import createIconSet from './lib/create-icon-set';

const glyphMap = {
'wechat': 59001, //中的 e625转成十进制
} 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;

Android 无法正常显示图标

在 android/app/build.gradle 下加入
project.ext.vectoricons = [
iconFontNames: [ 'FontAwesome.ttf'] // Name of the font files you want to copy
] apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
//或者直接引入全部
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"

IOS报错 unRecognized font family 'FontAwesome'

  1. 使用Xcode打开项目下的ios文件夹 或者 XXX.xcodeproj 文件(XXX为项目名)
  2. 打开之后目录中会有一个与项目名称同名的文件夹,右键单击这个文件夹,选择 Add files to XXX,加入要使用的.ttf文件或者是 react-native-vector-icons下的整个Fonts文件夹,记得勾选上 Create floders 中的 create group 和 Add to targets 中的 XXX。
  3. 编辑 与项目名同名的文件夹 下的 info.plist,并加入行 Fonts provided by application,在该行中加入 字体文件名
  4. 注意,每个被add的.ttf文件都要在 Fonts provided by application 中加入,当add的是整个Fonts文件夹时,文件夹中所有.ttf文件都要在Fonts provided by application 中加入,否则会出现 We ran "xcodebuild" command but it exited with error code 65. 这样的错误
  5. 注意,ios的font-family要求与字体文件字体名相同(不是文件名)比如从阿里妈妈下载的文件 字体名是 iconfont,那么在XXX.js中就要使用iconfont
const iconSet = createIconSet(glyphMap, 'iconfont', 'MyIcon.ttf'); //阿里妈妈的图标font-family为iconfont

主要参考资料

  1. https://blog.csdn.net/weixin_38713540/article/details/71474462
  2. https://blog.csdn.net/jiangcs520/article/details/69366245
  3. https://blog.csdn.net/Ruffaim/article/details/80049291

react-native-vector-icons 安装、使用的更多相关文章

  1. React Native 开发环境安装和配置使用报错: -bash: react-native: command not found

    [React  Native 开发环境安装和配置:-bash: react-native: command not found 报错: 前提是安装homebrew,node.js ,npm ,watc ...

  2. 转 : React Native 开发之 IDE 选型和配置

    转:https://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651112392&idx=1&sn=135e29ddde30 ...

  3. 【转】【React Native开发】

    [React Native开发]React Native控件之ListView组件讲解以及最齐全实例(19)  [React Native开发]React Native控件之Touchable*系列组 ...

  4. React Native专题

    转载注明出处:地址:http://www.lcode.org本文出自:[江清清的技术专栏]本React Native讲解专题:主要讲解了React Native开发,由基础环境搭建配置入门,基础,进阶 ...

  5. React Native 网络层分析

    文:志俊(沪江Web前端) 本文原创,转载请注明作者及出处 在使用React Native开发中,我们熟练的采用JavaScript的方式发送请求的方式发送一个请求到服务端,但是处理这个请求的过程其实 ...

  6. 新闻热词:从爬虫到react native应用

    背景 由于只想了解当天新增的top热词,减少过多信息干扰,打算做一款app实现这个功能. 架构: 热词抓取 -> mysql <=> nodejs <=> nginx & ...

  7. 《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  8. react native 环境报错

    按照react native中文网的文档安装 1.brew 管理软件 2.node 在终端启动工程后就报下面这个错误 这个错误是在RN在第一次配置环境启动一个工程的时候 ,在这过程中下载的缓存文件不完 ...

  9. React Native专题-江清清

    本React Native讲解专题:主要讲解了React Native开发,由基础环境搭建配置入门,基础,进阶相关讲解. 刚创建的React Native交流8群:533435865  欢迎各位大牛, ...

  10. React Native 常用插件案例

    (二).基础入门: 1.React Native For Android环境配置以及第一个实例 2.React Native开发IDE安装及配置 3.React Native应用设备运行(Runnin ...

随机推荐

  1. BZOJ 1500 洛谷2042维护序列题解

    BZ链接 洛谷链接 这道题真是丧心病狂.... 应该很容易就可以看出做法,但是写代码写的....... 思路很简单,用一个平衡树维护一下所有的操作就好了,重点讲解一下代码的细节 首先如果按照常规写法的 ...

  2. qt 中画线时如何设置笔的颜色和填充

    在上一次介绍中已经实现了自定义控件,并把Widget 放入了主界面中,画了一个圆,具体可参考“QT 自定义窗口” 下面我们介绍一下如何设置画笔颜色和所画图形的填充颜色. 画笔颜色: void Circ ...

  3. Redis源码解析:08对象

    前面介绍了Redis用到的所有主要数据结构,比如简单动态字符串(SDS).双端链表.字典.压缩列表.整数集合等.然而Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一 ...

  4. 如何解决iOS内存错误

    由于iOS5.0之前没有自动应用计数机制,也没有Java那样的垃圾回收功能.我们都需要自己管理和控制对象的回收,这是一件很麻烦的事情,也是做iOS项目中最容易出现的问题.如果不掌握这些方法,调试这些问 ...

  5. LeetCode75 Sort Colors

    题目: Given an array with n objects colored red, white or blue, sort them so that objects of the same ...

  6. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果

    在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...

  7. 洛谷P2947 [USACO09MAR]向右看齐Look Up

    #include<cstdio> #include<algorithm> #include<stack> #include<cctype> using ...

  8. C# Find vs FirstOrDefault

    本文告诉大家,在获得数组第一个元素时,使用哪个方法性能更高. 需要知道,两个方法都是 Linq 的方法,使用之前需要引用 Linq .对于 List 等都是继承可枚举Enumerable这时获取第一个 ...

  9. Hbase数据模型概念视图

  10. 14海量日志提取出现次数最多的IP

    问题描述:现有某网站海量日志数据,提取出某日访问该网站次数最多的那个IP. 分析:IP地址是32位的二进制数,所以共有N=2^32=4G个不同的IP地址, 如果将每个IP地址看做是数组的索引的话,那么 ...