这是一个普通的图标字体 Cocoapods 包,帮助您在项目中更轻松地使用图标字体,在 Swift 中。
预览
1 | 2 | 3 | 4 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
示例
要手动运行示例项目,请克隆仓库,demo 在 'Example' 文件夹中,然后使用 Xcode 打开 EFIconFont.xcworkspace
,并选择您想要的目标,运行。
或者在终端中运行以下命令
git clone [email protected]:EFPrefix/EFIconFont.git; cd EFIconFont/Example; pod install; open EFIconFont.xcworkspace
需求
版本 | 需要 |
---|---|
<0.5 | Xcode 10.0+ Swift 4.2+ iOS 8.0+ |
>=0.5 | Xcode 10.2+ Swift 5.0+ iOS 8.0+ |
安装
EFIconFont 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile
pod 'EFIconFont'
您可以使用 subspecs
获取内置的图标字体,例如,通过以下方式您将获得 AntDesign
和 FontAwesome
的图标
pod 'EFIconFont', :subspecs => ['AntDesign', 'FontAwesome']
您也可以选择使用 Complete
subspec 获取所有内置包
pod 'EFIconFont', :subspecs => ['Complete']
然后,运行以下命令
pod install
使用
1. 核心功能
实现 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 }
}
- 名称:字体名称,不一定等于 .ttf 文件名称,您可以使用 BirdFont 查看文件的
Name
属性; - 路径:
.ttf
文件的路径,通常可以通过以下代码获得:Bundle.main.path(forResource: name, ofType: "ttf")
(如果文件名与名称相同,则可以使用默认实现并无需实现此属性); - 属性:图标属性(您可以使用默认实现并无需实现此属性);
- Unicode:图标的唯一 Unicode;
实现协议的对象可以通过以下方法转换为字符串和图像,您还可以更改前景色和大小
// 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?
2. 内置图标字体包
此 Pod 在各个子规范中集成了免费资源,如 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
注意:尽管以下库都是免费的,但请确保您使用图标的方华盛顿越遵守原始作者的协议规范
名称 | 版本 | 数量 | 文件大小 | 描述 | 许可证 | 预览 |
---|---|---|---|---|---|---|
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 |
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.com |
IcoMoon | 1.0 | 490 | 94КБ | Bесплатный набор иконок IcoMoon | CC BY 4.0 / GPL | ionicons.com |
Ionicons | 4.5.5 | 696 | 143КБ | Ionicons | MIT | ionicons.com |
LigatureSymbols | 2.11 | 239 | 84КБ | Символы ligature | OFL | kudakurage.com/ligature_symbols |
MapIcons | 3.0.0 | 192 | 48 КБ | Набор иконок для использования на картах | OFL | map-icons.com |
MaterialIcons | 3.0.1 | 1057 | 695КБ | Иконки Google Material Design, четыре стиля | Apache-2.0 | material.io |
Meteocons | 47 | 15КБ | Набор иконок погоды, включая более 40 иконок | Бесплатно | alessioatzeni.com/meteocons | |
MetrizeIcons | 1.0 | 300 | 74КБ | Bесплатный набор из 300 иконок стиля Metro для дизайнеров и разработчиков | Бесплатно | alessioatzeni.com/metrize-icons |
OpenIconic | 1.1.1 | 223 | 33КБ | Открытый набор иконок с 223 метками в SVG | OFL | useiconic.com/open |
StrawberryIcon | 2.0.0 | 382 | 69КБ | Бесплатная библиотека иконок для разработчиков и создателей | OFL | chuangzaoshi.com/icon |
Stroke7 | 1.2.0 | 202 | 44КБ | Серия тонких иконок в стиле iOS 7 | Бесплатно | themes-pixeden.com/font-demos |
ThemifyIcons | 1.0 | 352 | 68KB | Полный набор иконок для использования в веб-дизайне и приложениях | Бесплатно | themify.me |
Typicons | 2.0.9 | 336 | 82КБ | Иконки в setSize 336 пикселей, пол velit во vorm vector, в наборе | OFL | s-ings.com/typicons |
VSCodeIcons | 1.0 | 133 | 24КБ | Иконки для Visual Studio Code | MIT | github.com/microsoft/vscode-icons |
WeatherIcons | 2.0.10 | 219 | 64КБ | Иконки для погоды, мореплавания и метеорологии | OFL | erikflowers.github.io/weather-icons |
Zocial | 1.3.0 | 112 | 31КБ | Популярные иконки социальных сетей | MIT | smcllns.github.io/css-social-buttons/ |
3. Расширение пользовательских наборов
(1) Импорт файла шрифта
Перетащите файл .ttf
библиотеки иконок в проект Xcode и убедитесь, что в списке Copy Bundle Resources
в Build Phases
содержится этот файл шрифта (Он включается по умолчанию, просто проверьте).
+на среди данных, файл будет загружен во время выполнения, поэтому не нужно добавлять его в элемент Fonts provided by application
в файле Info.plist
.
EFIconFontCaseIterableProtocol
(2) Реализация Создав реализацию EFIconFontCaseIterableProtocol вы можете получить объект своего пользовательского набора иконок шрифта, демонстрация в этом проекте показывает настройку с иконками Octicons GitHub как пример
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}"
// ...
}
(3) 呼叫
与上方的内置图标字体包相同
EFIconFontOcticons.thumbsup
(4) 注意
本项目中的 Octicons 图标库归 GitHub 所有。此仅为演示,请勿在违反其所有者规定的任何情况下使用
名称 | 版本 | 数量 | 文件大小 | 描述 | 许可证 | 预览 |
---|---|---|---|---|---|---|
Octicons | 8.4.2 | 184 | 34KB | GitHub 的图标 | GitHub 标志和用法 | octicons.github.com |
4. 其他
一些图标字体资源网站的用法
作者
EyreFree, [email protected]
许可
EFIconFont 在 MIT 许可下可用。更多信息请查阅LICENSE 文件。