一个普通的 iconfont cocoapods 包,可以帮助你在 Swift 项目中更轻松地使用 iconfont。
1 | 2 | 3 | 4 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
要手动运行示例项目,请克隆 repo,然后在项目文件夹中运行 sh Startup.sh
。 演示位于 Example
文件夹中,使用 Xcode 打开 Example.xcworkspace
并选择您想要的目标,然后运行。
或者,您可以在终端中运行以下命令
git clone git@github.com:EFPrefix/EFIconFont.git; cd EFIconFont; sh Startup.sh; open Example/Example.xcworkspace;
EFIconFont 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中
pod 'EFIconFont'
您可以使用 subspecs
获取内置的 iconfont,例如,您可以通过以下方式获取 AntDesign
和 FontAwesome
的图标
pod 'EFIconFont', :subspecs => ['AntDesign', 'FontAwesome']
您也可以选择使用 Complete
subspec 获取所有内置包
pod 'EFIconFont', :subspecs => ['Complete']
然后,运行以下命令
pod install
Swift 包管理器是一种用于自动分发 Swift 代码的工具,并已集成到 Swift 编译器中。
设置好 Swift 包后,将 EFIconFont 添加为依赖项就像将其添加到 Package.swift
的 dependencies
值中一样容易。
dependencies: [
.package(url: "https://github.com/EFPrefix/EFIconFont.git", .upToNextMinor(from: "6.0.0.0"))
]
实现 EFIconFontProtocol
协议的对象可以将自身转换为 NSAttributedString
或 UIImage
,如下所示
public protocol EFIconFontProtocol {
// `name` is not necessarily equal to .ttf file name
var name: String { get }
// `path` is path of .ttf file
var path: String { get }
// `attributes` is style of icon
var attributes: [NSAttributedString.Key : Any] { set get }
// `unicode` is unique identifier of particular icon
var unicode: String { get }
// `font` is UIFont of icon with input font size
func font(size fontSize: CGFloat) -> UIFont?
}
Name
属性;.ttf
文件的文件路径,通常可以通过类似 Bundle.main.path(forResource: name, ofType: "ttf")
的代码获取(如果文件名与名称相同,您可以使用默认实现,无需实现此属性);UIFont
。实现该协议的对象可以通过调用以下方法转换为字符串和图像,您还可以更改前景色和大小
// MARK:- String
func attributedString(size fontSize: CGFloat, attributes: [NSAttributedString.Key : Any]?) -> NSAttributedString?
func attributedString(size fontSize: CGFloat, foregroundColor: UIColor? = nil, backgroundColor: UIColor? = nil) -> NSAttributedString?
// MARK:- Image
func image(size fontSize: CGFloat, attributes: [NSAttributedString.Key : Any]?) -> UIImage?
func image(size fontSize: CGFloat, foregroundColor: UIColor? = nil, backgroundColor: UIColor? = nil) -> UIImage?
func image(size imageSize: CGSize, attributes: [NSAttributedString.Key : Any]?) -> UIImage?
func image(size imageSize: CGSize, foregroundColor: UIColor? = nil, backgroundColor: UIColor? = nil) -> UIImage?
此 pod 在 subspecs 中集成了一些免费资源,如 AntDesign
和 FontAwesome
。 它可以被需要使用它的人导入。 使用方法如下,您可以获得 EFIconFontProtocol
的返回值
EFIconFontAntDesign.addteam
您可以使用遵循 EFIconFontProtocol
的对象来获取 NSAttributedString
和 UIImage
EFIconFontAntDesign.addteam.attributedString(size: 24)
EFIconFontFontAwesomeBrands.adobe.attributedString(size: 32, foregroundColor: UIColor.white, backgroundColor: UIColor.green)
EFIconFontFontAwesomeRegular.addressBook.image(size: 24, foregroundColor: UIColor.red)
EFIconFontFontAwesomeSolid.alignLeft.image(size: CGSize(width: 36, height: 48), foregroundColor: UIColor.white)
您还可以通过以下代码获取类型为 [String : EFIconFontProtocol]
的 EFIconFontCaseIterableProtocol
对象的所有图标
EFIconFont.antDesign.dictionary
PS: 尽管以下库都是免费的,请确保您使用图标的方式符合原始作者的协议规范
名称 | 版本 | 数量 | 文件大小 | 描述 | 许可证 | 预览 |
---|---|---|---|---|---|---|
AliCloudConsole | 1.0 | 266 | 42KB | AliCloudConsole | 未知 | iconfont.cn |
AntChain | 1.0 | 77 | 17KB | AntChain | 未知 | iconfont.cn |
AntDesign | 1.0 | 557 | 127KB | Ant Design | MIT | iconfont.cn |
Dashicons | 0.9.0 | 203 | 51 KB | WordPress 管理的官方图标字体 | GPLv2 | wordpress.org |
Devicons | 1.8.0 | 192 | 92KB | 开发人员的标志性字体 | MIT | vorillaz.github.io/devicons |
ElusiveIcons | 2.0.0 | 304 | 53KB | Elusive Icons | OFL | elusiveicons.com |
EVAIcon | 21 | 45 KB | EVA | OFL | EVA-icon | |
EvilIcons | 1.10.1 | 70 | 16 KB | 简单干净的 SVG 图标包 | MIT | evil-icons.io |
FontAwesom(Regular / Brands / Solid) | 5.8.1 | 1516 | 356KB | Font Awesome | Font Awesome Free License | fontawesome.com |
FoundationIcons | 3.0 | 283 | 68KB | Foundation Icon Fonts 3 | - | zurb.com/playground/foundation-icon-fonts-3 |
Genericons | 4.0.4 | 103 | 16KB | Genericons Neue 是通用外观的图标,适用于博客或简单的网站 | GPLv2 | genericons.com |
Hawcons | 1.0 | 1035 | 685KB | Hawcons,包括文档,运动,天气,表情符号,手势,文件类型等的图标。 | 免费 | hawcons.com |
IcoMoon | 1.0 | 490 | 94KB | IcoMoon 免费图标 | CC BY 4.0 / GPL | ionicons.com |
Ionicons | 4.5.5 | 696 | 143KB | Ionicons | MIT | ionicons.com |
LigatureSymbols | 2.11 | 239 | 84KB | Ligature Symbols | OFL | kudakurage.com/ligature_symbols |
MapIcons | 3.0.0 | 192 | 48 KB | 一组用于地图的图标 | OFL | map-icons.com |
MaterialIcons | 3.0.1 | 1057 | 695KB | Google 的 material design 图标,四种样式 | Apache-2.0 | material.io |
Meteocons | 47 | 15KB | 一组天气图标,包含 40 多个图标 | 免费 | alessioatzeni.com/meteocons | |
MetrizeIcons | 1.0 | 300 | 74KB | 设计师和开发人员的 300 个 Metro 风格图标的免费集合 | 免费 | alessioatzeni.com/metrize-icons |
OpenIconic | 1.1.1 | 223 | 33KB | 一个开源图标集,在 SVG 中有 223 个标记 | OFL | useiconic.com/open |
StrawberryIcon | 2.0.0 | 382 | 69KB | 一个为开发者和创造者提供的免费且开源的图标字体库 | OFL | chuangzaoshi.com/icon |
Stroke7 | 1.2.0 | 202 | 44KB | 一系列受 iOS 7 启发的细笔画图标 | 免费 | themes-pixeden.com/font-demos |
淘宝 | 1.0 | 434 | 126KB | 淘宝 | 未知 | iconfont.cn |
ThemifyIcons | 1.0 | 352 | 68KB | 一套完整的图标,可在网页设计和应用程序中使用 | 免费 | themify.me |
天猫 | 1.0 | 564 | 190KB | 天猫 | 未知 | iconfont.cn |
Typicons | 2.0.9 | 336 | 82KB | 套件中有 336 个像素完美的通用矢量图标 | OFL | s-ings.com/typicons |
VSCodeIcons | 1.0 | 133 | 24KB | Visual Studio Code 的图标 | MIT | github.com/microsoft/vscode-icons |
WeatherIcons | 2.0.10 | 219 | 64KB | 基于天气、海事和气象的图标 | OFL | erikflowers.github.io/weather-icons |
Zocial | 1.3.0 | 112 | 31KB | 流行的社交图标 | MIT | smcllns.github.io/css-social-buttons/ |
将图标库的 .ttf
文件拖到 Xcode 项目中,并确保 Build Phases
中的 Copy Bundle Resources
列表包含此字体文件(默认情况下会包含,只需检查即可)。
此外,该文件将在运行时加载,无需将其添加到 Info.plist
文件中的 Fonts provided by application
项目中。
通过实现 EFIconFontCaseIterableProtocol,您可以获得您的自定义 iconfont 包对象,该项目中的演示展示了使用 GitHub 的 Octicons 作为 示例 的自定义。
import EFIconFont
public extension EFIconFont {
public static let octicons = EFIconFontOcticons.self
}
extension EFIconFontOcticons: EFIconFontCaseIterableProtocol {
public static var name: String {
return "octicons"
}
public var unicode: String {
return self.rawValue
}
}
public enum EFIconFontOcticons: String {
case thumbsup = "\u{e6d7}"
case unverified = "\u{e6d6}"
case unfold = "\u{e6d5}"
case verified = "\u{e6d4}"
// ...
}
与上面的 Built-in iconfont packs
相同
EFIconFontOcticons.thumbsup
本项目中的 Octicons
图标库归 GitHub 所有。这只是一个演示,请勿在任何违反其所有者设定的规范的情况下使用它
名称 | 版本 | 数量 | 文件大小 | 描述 | 许可证 | 预览 |
---|---|---|---|---|---|---|
Octicons | 8.4.2 | 184 | 34KB | GitHub 的图标 | GitHub Logos and Usage | octicons.github.com |
一些 iconfont 资源站点的使用
EyreFree, eyrefree@eyrefree.org
EFIconFont 在 MIT 许可下可用。 有关更多信息,请参见 LICENSE 文件。