Iconic 1.5

Iconic 1.5

测试已测试
Lang语言 SwiftSwift
许可证 Apache-2.0
发布最后发布2019年9月
SPM支持SPM

Ignacio RomeroRobbie TrenchenyIgnacio维护。



Iconic 1.5

  • Ignacio Romero Zurbuchen、Robbie Trencheny和Home Assistant作者团队

Iconic Header

Travis codecov Pod Version Pod Platforms Swift Version License

Iconic帮助您在iOS、tvOS和watchOS上轻松集成图标字体。其主要组件负责利用SwiftGen自动生成强类型Swift代码,兼容Objective-C。

您将与名为{FontName}Icon.swift的自动生成的类交互,这是一个对IconDrawable.swift协议的轻量级封装。有关更多信息,请参阅如何安装如何使用

通过在终端中简单地运行pod try Iconic来尝试使用Iconic,并选择Samples.xcworkspace

Scale Example

为什么选择图标字体?

  • 分辨率无关:无质量损失地缩放和着色
  • 自动缩放以适应不同的屏幕密度
  • 使用(数量远比)更少的图像文件
  • 提高视觉一致性
  • 平台无关
  • 提高UI的可访问性
  • 易于使用

我在哪里可以找到很棒的图标字体?

关键特性

注意:一些开源的图标字体没有包括每个符号的名称,这可能会导致枚举不具有描述性,使用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以及作为资源添加的字体文件:Pod Setup

如何使用

有关完整文档,请访问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];

界面构建器支持

Interface Builder

Iconic包含一个名为 {FontName}IconView.swiftUIImageView 子类,符合 @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];

示例项目

查看示例项目,那里演示了所有功能。 Sample Project

通过在终端中执行 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中添加一个图标字体目录。将这些内容用作关于图标及其名称的视觉参考资料。

Icon Font Catalog

注意:如果您使用的是Chrome浏览器,则需要在命令行中使用open -a 'Google Chrome' --args -allow-file-access-from-files重新启动它,以便可以打开并查看目录。这是因为html的javascript加载本地的json文件,Chrome内置了禁用这一特性的安全功能。您也可以使用任何其他网络浏览器如Safari或Firefox来打开目录html。

图标字体示例

此存储库还包括一些开源和免费的图标字体,您可以使用它们尝试Iconic。

致谢

Iconic最初由Ignacio Romero Zurbuchen开发。如需更多信息,请参阅AUTHORS.md

许可

本库受Apache 2.0 许可证许可。

SwiftGen受MIT 许可证许可。

Font Awesome 字体受SIL OFL 1.1 许可证许可。