iOS 使用iconfont

今天我们项目开始使用iconfont,至于为什么,看看下面就晓得喽
介绍:Iconfont 是一套字体图标,和我们使用自定义字体的方式是一样的,并且它是一种矢量图标。

计算机中显示的图形一般分为两类—位图和矢量图,
我们平常使用的JPEG、PNG等图片都是位图格式,是一种由像素来表示的图像。

⚠️矢量图⚠️是由点、直线、多边形等基于数学方程的几何图元表示的图像,对比位图,矢量图具有体积小,放大缩小都不会失真的优点,这个优点就可以给项目带来很大好处了,但缺点是无法用来表达色彩层次丰富的图像,因此一些色彩复杂的图形仍然需要位图去表达。

针对于基础icon,复制多份到各自的模块中是不太优雅的,利用Iconfont就可以很好的解决。

优点缺点
图片进行复用,并且很方便的更改图片的大小和颜色只是支持单色(web支持彩色)
减小应用体积,字体文件比图片要小制作成本高
图标保真缩放,解决2x/3x乃至将来nx图问题;
同一套资源可以应用在不同的平台 iOS,Android,web

**

iOS 中的使用流程:

**
iconfont平台,下载你们设计制作好的图标
在这里插入图片描述

可以和我一样跟着新建下面的文件及拖入下载好的ttf资源文件
在这里插入图片描述

info.plist 需要添加在这里插入图片描述
MMHIconFont.h代码,我是用来统一管理的

字符串对应的是iconfont的Unicode码哦
static NSString *const Test_icon  = @"\U0000e652";

然后增加了两个扩展,我用的是swift,你们也可以用oc
在这里插入图片描述

image扩展代码:

import UIKit

extension UIImage {
    
    @objc class func iconfont(text: String, size: CGFloat, color: UIColor) -> UIImage {
        let size = size
        let scale = UIScreen.main.scale
        let realSize = size * scale
        let font = UIFont.iconFont(size: realSize)
        UIGraphicsBeginImageContext(CGSize(width: realSize, height: realSize))
        let textStr = text as NSString
        if textStr.responds(to: NSSelectorFromString("drawAtPoint:withAttributes:")) {
            textStr.draw(at: CGPoint.zero, withAttributes: [NSAttributedString.Key.font: font, NSAttributedString.Key.foregroundColor: color])
        }
        var image: UIImage = UIImage()
        if let cgimage = UIGraphicsGetImageFromCurrentImageContext()?.cgImage {
            image = UIImage(cgImage: cgimage, scale: scale, orientation: .up)
            UIGraphicsEndImageContext()
        }
        return image
    }
    
}

UIFont扩展代码:

import UIKit

extension UIFont {
    @objc class func iconFont(size: CGFloat) -> UIFont {
        let font = UIFont(name: "iconfont", size: size)
        if font == nil {
            assert((font != nil), "UIFont object should not be nil, check if the font file is added to the application bundle and you're using the correct font name.")
        }
        return font ?? UIFont.systemFont(ofSize: 18)
    }
}

调用示例:


OC 调用示例
label:
	label.text = Test_icon;
	label.font = UIFont.iconFont(size: 12)
	label.textColor = [UIColor redColor];

imageView:
imageView.image = [UIImage iconFont....就会联想啦。我就不写啦

swift调用就不用说了吧。
oc调用的时候记得要把MMHIconFont.h加入到桥接文件中哦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值