ReactNative中如何使用自定义的Iconfont图标

更新日期: 2020-03-20阅读: 2.8k标签: 图标

在App包的构成中图片资源是比较占大小的,所以我们可以利用Iconfont来替代原来的png或者jpg单色图标,iconfont的优点是占Size小、支持任意大小不失真、支持任意颜色设置、平台化管理icon等等。

本文主要分为三部分:

  • react-native-vector-icons库的集成与使用
  • 如何使用任意自定义的iconfont
  • 编写脚本来快捷生成iconfont映射文件


1.react-native-vector-icons库的集成与使用

react-native-vector-icons是ReactNative开发中十分好用的一个用来展示iconfont图标的库。

集成只要两步:
1.引入依赖

Run: npm install --save react-native-vector-icons

2.链接原生库

Run: react-native link react-native-vector-icons

如果第二步链接失败或者运行错误,可以自己手动链接,具体可以参考react-native-vector-icons说的比较清楚了。

集成完毕后,可以看到这个库默认引入了几个ttf文件(android项目在assets/fonts下):

默认引入的一些ttf文件
也就是说这些ttf文件中所有icon都可以直接使用,下面就说一下如何使用。

使用非常简单,如下:

import Icon from "react-native-vector-icons/Ionicons";
<Icon name='md-pricetag' size={16} color='#cccccc'></Icon>


2.如何使用任意自定义的iconfont

面介绍了react-native-vector-icons库的使用,但是目前为止你能使用的iconfont只有上面说的默认引入的那些ttf文件中的icon,因为上面所使用的< Icon>< /Icon>只支持默认引入的那些icon。

这样显然不能满足我们的要求,我们想要使用自己的iconfont,那么我们该如何做呢,这里以从阿里iconfont平台上选择自己想要的icon为例做介绍。

一、从阿里iconfont平台上挑选自己想要的icon,打包下载到本地并解压,如下:
解压后

二、将iconfont.ttf文件copy到android项目的assets/fonts目录下

三、自定义图标库
CXIcon.js

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

const iconSet = createIconSet(glyphMap, 'CXIcon', '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;

看到import glyphMap from ‘./iconfont.json’了吗,所以这里我们还需要一个iconfont.json,也就是映射map。

iconfont.json:

{
  "biscuit": 58983,
  "pizza": 59024,
  "dangao": 59080
}

这是我们在阿里iconfont上下载的三个icon对应的Unicode码。

ok,到这里我们就可以使用来展示我们自定义下载的几个icon了,使用如下:

import React, {Component} from 'react';
import {
    Text,
    View
} from 'react-native';
import CXIcon from "./components/cxicon/CXIcon";

type Props = {};
export default class App extends Component<Props> {
    render() {
        return (
            <View style={styles.container}>
                <Text>展示来自自定义的ttf文件的icon</Text>
                <CXIcon name='biscuit' size={50} color='#226688'></CXIcon>
            </View>
        );
    }
}


3.编写脚本自动生成上面的iconfont.json映射文件

看完第二步 其实你就已经可以自由的使用自己选择的icon图标了,但是你会发现一个问题,上面我们需要一个iconfont.json映射文件,这个映射文件是我们手写的,如果只有3个图标那我们可以手写,那如果是300个图标,如果还手写,那就不是程序员的风格了,我们的风格是什么?没错,是懒惰,不可能做重复的工作的,这辈子都不可能做重复的工作的。

回到上面,我们从阿里iconfont平台下载到的zip压缩包解压缩后里面有一个iconfont.svg文件,我们就根据这个文件来解析生成我们想要的iconfont.json映射文件,撸起袖子,写个shell脚本。

iconfont_mapper.sh:

#!/bin/sh

if [ $# != 1 ] ; then

    echo "usage: $0 iconfont.svg(your svg file name)  "
    exit
fi

#OutputFile path,you can customize your path
OutputFileName=`echo iconfont.json`

mapper=` awk '{ if($0 ~ /glyph-name/) print $0;  if($0 ~ /unicode/)  print $0"|split|" }'  $1| tr '[:upper:]' '[:lower:]'| awk '{print $0}'  RS='\='| tr "\n\"&#;" " "| awk  '{ if ($1!="split"&&$1!=""){ printf ("\""$3"\":"); printf ($5","); print "\r " }}' RS="|split|" | sed "s/-/_/g"`

rm $OutputFileName
echo "{" >> $OutputFileName
echo $mapper >> $OutputFileName
echo "}" >> $OutputFileName

#usage:
# ./iconfont_mapper.sh svg_file_path

使用:
命令行执行: ./iconfont_mapper.sh iconfont.svg 即可。

注意:如果你的iconfont_mapper.sh脚本和iconfont.svg文件没有放在同一个文件目录下,则iconfont.svg需要拼全路径。

执行完这个脚本你就会发现在脚本所在的目录下自动生成了我们需要的iconfont.json映射文件。将它放到项目中即可。

Demo及脚本地址RNIconfont【欢迎issue/star/follow~】

本文转载自:https://blog.csdn.net/zcxwww/article/details/79831330  

链接: https://www.fly63.com/article/detial/8298

html中为何经常使用<i>标签来作为小图标呢?

很多网站都是习惯使用<i></i>来代表小图标?而实际上用 <i> 元素做图标在语义上是不正确的(虽然看起来像 icon 的缩写),那么用<i>表示小icon,是出于好记的原因吗,还是看上去有点像icon?这样不是违背了语义化的原则吗?

微信分享图标设置,以及wx.config配置

页面分享微信显示小图和描述的功能,微信就会抓取这张图片做为分享图片,微信对自定义分享内容作了限制,于是最终还是得回到配置wx.config上来。

利用伪元素:before和:after插入图标

如果你想在网页的某些文字前加图标或者想改变li元素默认的图标,你会如何做?本文价绍一种不用再额外添加html标签,存粹利用css就能插入或者自作图标的方式。

HTML中title前面小图标的实现_如何给网页标题添加icon小图标

今天给大家分享的是如何在网页标题中加入小图标,你的图标格式最好是.ico格式的,为了兼容性考虑,使用的颜色不要超过16色,这里这个图标的命名要求必须为favicon.ico

css图标库_css常用的矢量图标大全

这篇文章主要介绍前端常用的css图标库有哪些?比如:阿里巴巴矢量图标库Iconfont、Font Awesome、Cikonss、Glyph Icons、Simple Line Icons等等,使用css图标,可以通过样式对他进行设置字体颜色,大小等

网页中favicon.ico图标的作用、尺寸、制作

网站favicon.ico文件的用途很简单,就是在浏览器标签里,最前面显示的那个logo,对于网站 favicon.ico 图标的大小,建议大家选择 16x16 或者 32x32,再大也是完全没有必要的。favicon.ico

图标使用新姿势- react 按需引用 svg 的实现

图标是前端在业务开发中不得不写的一个东西,以我司的几个部门为例,每个组在写图标上都有不一样的方式:用户平台:单色图标用 iconfont 上提供的字体文件,彩色图标用 img 引入代替或者使用iconfont 上提供的 symbol.js 。

font-awesome图标转为图片

font-awesome图标是字体,专业术语叫 Icon Font,本质上是使用 PUA ( Private Unicode Area )码位 Unicode 编码的字符,所以font-awesome图标、Bootstrap 的图标和 Wingdings 字体都是一样的,不一样的无非是编码。

Bootstrap图标

小图标icon是一个优秀Web中不可缺少的一部分,起到画龙点睛的效果。在Bootstrap框架中也为大家提供了250多个不同的icon图片。本文将详细介绍Bootstrap图标,Bootstrap框架中的图标都是字体图标

纯css制作电闪雷鸣的天气图标

使用box-shadow属性写几个圆,将这些圆错落的组合在一起,形成云朵图案;after伪元素写下面的投影样式;before伪元素写黄色闪电的样式;用两个嵌套的div容器就可以了,父容器来控制图标显示的位置

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!