使用react-native-vector-icons自定义图标

做一个有情怀的程序员

react-native-vector-icons图标库中有很多图标,但并不是完全符合我们的需求,在开发过程中往往都是由美工给出效果图,我们根据效果图绘制UI界面,如此一来就会发生图标风格不匹配等问题,那有没有可能使用自定义图标呢?答案是肯定的,但必须是SVG格式且要借助于第三方网站如:阿里巴巴矢量图标库icomoon.io等。

配置工作:

1.假设你已经成功配置了react-native-vector-icons,如果没有配置请移步React Native第三方组件之react-native-vector-icons


2.登录阿里巴巴矢量图标库,搜索并选择你需要的图标,加入到项目中,如图1;

图1


3.选择好所有图标后,点击页面右上角购物车按钮(上面会显示你所选图标的总数),如图2;
图2

4.点击添加到项目按钮,如图3;
图3

5.将图标添加到项目,你可以选择已有项目,也可以新增项目,然后确定,如图4-5;
图4
图5

6.选择每一个图标上的编辑按钮可以调整图标的大小、位置、可以看到图标的16进制编码,全部调整好后,将文件下载到本地,如图6-7;
图6
图7

7.打开下载后的文件夹,找到 iconfont.ttf 文件,并将文件复制到react项目中的/node_modules/react-native-vector-icons/Fonts 目录下。


8.使用Terminal进入项目根目录,执行react-native link 命令,等待执行完成。


9.在/node_modules/react-native-vector-icons/glyphmaps/ 目录下新建iconfont.json 文件,文件内容如下:

{
  "home" : 58912,
  "category" : 58880,
  "cart" : 58892,
  "mine" : 58948
}

key是项目中使用的图片name字段,value就是最初上传图标后,图标下方的16进制转成10进制的数值。如何将16进制转成10进制请移步在线进制转换


10.在/node_modules/react-native-vector-icons/ 目录下新建iconfont.js 文件,文件内容如下:

/**
 * Created by ice on 2017/8/27.
 */
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;

至此,配置工作全部完成,可以到项目中尽情的享用了。


使用

1.在页面中导入组件import Icon from 'react-native-vector-icons/iconfont';然后就可以使用了;

import React, { Component } from 'react';
import {AppRegistry,View} from 'react-native';
import Icon from 'react-native-vector-icons/iconfont';
export default class icons2 extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Icon name={'home'} size={26} color="red"/>
        <Icon name={'category'} size={26} color="red"/>
        <Icon name={'cart'} size={26} color="red"/>
        <Icon name={'mine'} size={26} color="red"/>
      </View>
    );
  }
}

AppRegistry.registerComponent('icons2', () => icons2);

2.以下是我使用react-navigation写的简单的页面跳转的Demo,其中的图标就是使用的自定义图标,源码就不献丑了,看看效果图吧。


自定义TabBar图标

结语:

自定义图标教程就到这里,有任何问题可以留言或者私信我,说的不对的地方请提出包涵,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容