Iconic帮助您在iOS、tvOS和watchOS上轻松集成图标字体。其主要组件负责利用SwiftGen自动生成强类型Swift代码,兼容Objective-C。
您将与名为{FontName}Icon.swift
的自动生成的类交互,这是一个对IconDrawable.swift
协议的轻量级封装。有关更多信息,请参阅如何安装和如何使用。
通过在终端中简单地运行pod try Iconic
来尝试使用Iconic,并选择Samples.xcworkspace
。
为什么选择图标字体?
- 分辨率无关:无质量损失地缩放和着色
- 自动缩放以适应不同的屏幕密度
- 使用(数量远比)更少的图像文件
- 提高视觉一致性
- 平台无关
- 提高UI的可访问性
- 易于使用
我在哪里可以找到很棒的图标字体?
- 查看此仓库中的图标字体!
- 外面有许多开源的图标字体(大多数都可在SIL开放字体协议下使用)。它们是为网页设计的,但在iOS上同样非常有用。
- 你可以咨询附近的设计师!制作图标字体并不难,尤其是如果你已经有了矢量资源。
- 你可以阅读这篇文章,并尝试fontastic.me。
关键特性
- 通过 CocoaPods 简单安装
- 自动生成枚举和字体Unicode映射,超出字体的PUA范围
- 支持
NSAttributedString
和UIImage
输出 - 支持TTF和OTF字体文件
- 字体动态包含和注册
- 界面构建器支持(仅限iOS和tvOS)
- UIKit扩展,用于
UIBarButtonItem
、UITabBarItem
和UIButton
(仅限iOS和tvOS) - 自动生成图标字体HTML目录
- 与Swift 3.0和Objective-C兼容
- iOS 8及以上版本
- tvOS 9及以上版本
- watchOS 2及以上版本
注意:一些开源的图标字体没有包括每个符号的名称,这可能会导致枚举不具有描述性,使用Iconic时可能会使您感到不够直观。如果您是自己创建图标字体,请确保每个符号都有适当的名称。
安装
通过CocoaPods
首先在Podfile中定义Iconic
。因为我们使用了一个非传统环境变量,所以需要按照以下方式进行操作
pod 'Iconic', :git => 'https://github.com/home-assistant/Iconic.git', :tag => '1.3'
如果您想用自定义图标字体安装Iconic
,则需要使用FONT_PATH
环境变量
FONT_PATH='/Users/WillFerrell/Desktop/super-duper-font.otf' pod install
FONT_PATH='/Users/WillFerrell/Desktop/super-duper-font.otf' pod update Iconic
如果您只是调用pod install
,则Iconic
将使用其默认字体FontAwesome。
安装完成后,您应该能看到3个文件:IconDrawable.swift
、自动生成的{FontName}Icon.swift
以及作为资源添加的字体文件:
如何使用
有关完整文档,请访问Iconic的文档。
导入
导入 Iconic 模块
Swift
import Iconic
Objective-C
@import Iconic;
注册图标字体
注册是激活 Iconic 的必要步骤。您需要在应用启动时进行一次注册。内部会检索图标映射并在应用的生命周期内保存在内存中。
Iconic 提供了一种方便的注册图标字体的方式:注意:方法名称可能因您的图标字体名称而异
Swift
FontAwesomeIcon.register()
Objective-C
[Iconic registerFontAwesomeIcon];
作为图片使用
您可以从字体图标创建一个 UIImage
实例并着色。这对于与期望 UIImage
对象的现有 UIKit 控件集成可能会非常方便。
使用 NSStringDraw API 创建图片,将 NSAttributedString
渲染成 UIImage
。
Swift
let size = CGSize(width: 20, height: 20)
let icon = FontAwesomeIcon.HomeIcon
let image = icon.image(ofSize: size, color: .blue)
Objective-C
[Iconic imageWithIcon:FontAwesomeIconHomeIcon size:CGSizeMake(20, 20) color:[UIColor blueColor]];
作为富文本使用
您可以像文本一样使用图标,并简化您的布局工作。例如,您可以将一个图片和一个标签组合到一个标签中,而不是分别放置。
Swift
let icon = FontAwesomeIcon.HomeIcon
let iconString = icon.attributedString(ofSize: 20, color: .blue)
Objective-C
[Iconic attributedStringWithIcon:FontAwesomeIconHomeIcon pointSize:20.0 color:[UIColor blueColor]];
作为 Unicode 字符串使用
最后,您可能需要检索图标的 Unicode 字符串表示形式来进行更高级的操作
Swift
let unicode = FontAwesomeIcon.HomeIcon.unicode
作为字体使用
为了进一步自定义,您可能需要使用UIFont对象。
Swift
let font = FontAwesomeIcon.font(ofSize: 20)
Objective-C
UIFont *font = [Iconic fontAwesomeIconFontOfSize:20.0];
界面构建器支持
Iconic包含一个名为 {FontName}IconView.swift
的 UIImageView
子类,符合 @IBInspectable
。该类使IB集成变得容易。
- 使用
iconName
属性在界面构建器上设置图标(以图标字体HTML目录作为图标名称的参考)。 - 调整视图的边界以查看它动态调整图标大小。
UIKit 扩展
UIKit 扩展也被包括在内,只是为了使您的代码看起来更简洁。
Swift
// UITarbBarItem
UITabBarItem(withIcon: .BookIcon, size: CGSize(width: 20, height: 20), title: "Catalog")
// UIBarButtonItem
UIBarButtonItem(withIcon: .BookIcon, size: CGSize(width: 24, height: 24), target: self, action: #selector(didTapButton))
// UIButton
let button = UIButton(type: .System)
button.setIconImage(icon: .HeartIcon, size: CGSize(width: 44, height: 44), color: nil, forState: .Normal)
Objective-C
// UITarbBarItem
[[UITabBarItem alloc] initWithIcon:FontAwesomeIconBookIcon size:CGSizeMake(20.0, 20.0) title:@"Catalog"];
// UIBarButtonItem
[[UIBarButtonItem alloc] initWithIcon:FontAwesomeIconCogIcon size:CGSizeMake(24.0, 24.0) target:self action:@selector(didTapButton)];
// UIButton
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
[button setIconImageWithIcon:FontAwesomeIconHeartIcon size:CGSizeMake(44.0, 44.0) color:nil forState:UIControlStateNormal];
示例项目
通过在终端中执行 pod try Iconic
来试用Iconic,并选择 Samples.xcworkspace
。
在示例项目中,Iconic作为开发pods安装。因此,pod文件没有进行版本控制。因此,如果您手动克隆存储库,您将需要自己安装pods。
关于watchOS支持
在运行watchOS示例时,您可能会遇到“找不到模块CoreText”的错误。这是因为watchOS模拟器缺少CoreText.framework。运行位于本存储库中的'WatchSimulator-CoreText-Patch.sh'脚本,从WatchOS SDK复制CoreText头文件。然后您就可以在没有问题的情况下运行watchOS示例,以及在没有问题的情况下在模拟器中运行您的Watch应用程序图标。
图标字体目录
除了自动生成的Swift代码外,还将在Pods/Iconic/Source/Catalog
中添加一个图标字体目录。将这些内容用作关于图标及其名称的视觉参考资料。
注意:如果您使用的是Chrome浏览器,则需要在命令行中使用open -a 'Google Chrome' --args -allow-file-access-from-files
重新启动它,以便可以打开并查看目录。这是因为html的javascript加载本地的json文件,Chrome内置了禁用这一特性的安全功能。您也可以使用任何其他网络浏览器如Safari或Firefox来打开目录html。
图标字体示例
此存储库还包括一些开源和免费的图标字体,您可以使用它们尝试Iconic。
- FontAwesome,由Dave Gandy创作
- Dripicons,由Amit Jakhu创作
- open-iconic,由Waybury创作
- MaterialIcons,由Google创作
- Linearicons,由Perxis创作
致谢
Iconic最初由Ignacio Romero Zurbuchen开发。如需更多信息,请参阅AUTHORS.md。
许可
本库受Apache 2.0 许可证许可。
SwiftGen受MIT 许可证许可。
Font Awesome 字体受SIL OFL 1.1 许可证许可。