TypographyKit TypographyKit

Build Status Version Carthage compatible License Platform Twitter Swift 5.0 Reviewed by Hound

TypographyKit 使您可以轻松地在 iOS 应用程序中定义排版样式和调色板,帮助您在设计中实现视觉一致性,并支持 动态类型,即使在使用自定义字体时也是如此。 [摘要] [详细]

要了解更多关于如何使用 TypographyKit 的信息,请查看下面的目录

功能特性

TypographyKit 5.0.0 中的新功能?

TypographyKit.configure(
    with: TypographyKitConfiguration.default
        .setConfigurationURL(configurationURL)
)

或者,对于支持 iOS 13 及更高版本的开发者,存在此方法的 async 版本

await TypographyKit.configure(with:
    TypographyKitConfiguration.default.setConfigurationURL(configurationURL)
)

有关更改的详细列表,请参阅 CHANGELOG.md

安装

Cocoapods

CocoaPods 是一个依赖管理器,它将依赖项集成到您的 Xcode 工作区中。要使用 RubyGems 安装它,请运行

gem install cocoapods

要使用 Cocoapods 安装 TypographyKit,只需将以下行添加到您的 Podfile

pod "TypographyKit"

然后运行命令

pod install

有关更多信息,请 参阅此处

Carthage

Carthage 是一个依赖管理器,它生成一个二进制文件,用于手动集成到您的项目中。可以通过 Homebrew 使用以下命令安装

brew update
brew install carthage

为了通过 Carthage 将 TypographyKit 集成到您的项目中,请将以下行添加到您的项目的 Cartfile

github "rwbutler/TypographyKit"

从 macOS 终端运行 carthage update --platform iOS 以构建框架,然后将 TypographyKit.framework 拖到您的 Xcode 项目中。

有关更多信息,请 参阅此处

用法

示例应用

Example 目录中存在一个示例应用,以提供一些入门指南。

配置

在您的应用项目中包含一个 TypographyKit.json (示例) 或 TypographyKit.plist (示例) 作为您定义颜色和排版样式的一部分

{
    "typography-colors": {
        "background": {
            "dark": "dark royal-blue",
            "light": "lightest gray"
        },
        "gold": "#FFAB01",
        "royal-blue": "#08224C"
    },
    "typography-kit": {
        "labels": {
            "line-break": "word-wrap"
        },
        "minimum-point-size": 10,
        "maximum-point-size": 100,
        "point-step-size": 2,
        "point-step-multiplier": 1,
        "scaling-mode": "uifontmetrics-with-fallback"
    },
    "ui-font-text-styles": {
            "heading": {
            "font-name": "Avenir-Medium",
            "point-size": 36,
            "text-color": "text",
            "letter-case": "regular"
        }
    }
}

Swift UI

颜色

排版 (字体)

在您的应用中定义与 .plist 中定义的 UIFont.TextStyles 匹配的附加 UIFont.TextStyles

extension UIFont.TextStyle
{
    static let heading = UIFont.TextStyle(rawValue: "heading")
}

在您通常在 UILabel 上设置文本的位置,例如

self.titleLabel.text = "My label text"

使用 TypographyKit 的 UIKit 扩展

self.titleLabel.text("My label text", style: .heading)

或者,如果您的文本已通过 IB 设置,只需以编程方式设置 UIFont.TextStyle

self.titleLabel.fontTextStyle = .heading

如果您乐意使用字符串,则设置 fontTextStyle 属性的另一种方法是在您的 UIKit 元素上将键路径 fontTextStyleName 设置为表示您的 fontTextStyle 的字符串值 - 在上面的示例中,这将是“heading”。

Setting the fontTextStyleName key path in Interface Builder

使用此方法,可以在您的应用程序中以零代码支持动态类型。

您的 UILabel 和 UIButton 元素将在设置 UIFont.TextStyle 后自动响应 iOS 上动态类型设置的更改,而无需进一步操作。

排版样式

您在 TypographyKit.plist 中定义的排版样式可以选择性地包含文本颜色和字母大小写。

	<key>ui-font-text-styles</key>
	<dict>
		<key>heading</key>
		<dict>
			<key>font-name</key>
			<string>Avenir-Medium</string>
			<key>point-size</key>
			<integer>36</integer>
			<key>text-color</key>
			<string>#2C0E8C</string>
			<key>letter-case</key>
			<string>upper</string>
		</dict>
	</dict>

扩展样式

从 1.1.3 版本开始,可以使用现有的排版样式来创建新的样式。例如,假设您想基于现有样式创建一个新样式,但更改文本颜色。我们可以使用 extends 关键字来扩展已存在的样式,然后指定要覆盖该样式的哪些属性,例如 text-color 属性。

我们可以创建一个名为 interactive-text 的新排版样式,该样式基于我们已定义的名为 paragraph 的样式,如下所示

PLIST

<key>paragraph</key>
<dict>
	<key>font-name</key>
	<string>Avenir-Medium</string>
	<key>point-size</key>
	<integer>16</integer>
	<key>text-color</key>
	<string>text</string>
	<key>letter-case</key>
	<string>regular</string>
</dict>
<key>interactive-text</key>
<dict>
	<key>extends</key>
	<string>paragraph</string>
	<key>text-color</key>
	<string>purple</string>
</dict>

JSON

"paragraph": {
	"font-name": "Avenir-Medium",
	"point-size": 16,
	"text-color": "text",
	"letter-case": "regular"
},
"interactive-text": {
	"extends": "paragraph",
	"text-color": "purple"
}        

调色板

Android 从一开始就为开发者提供了在 colors.xml 文件中定义应用调色板的方法。Colors.xml 还允许开发者通过十六进制值定义颜色。TypographyKit 允许开发者通过在 TypographyKit.plist 中创建一个条目来定义应用的调色板。

    <key>typography-colors</key>
    <dict>
        <key>blueGem</key>
        <string>#2C0E8C</string>
    </dict>

可以使用十六进制值、RGB 值或简单颜色(通过使用其名称,例如“蓝色”)来定义颜色。

	<key>typography-colors</key>
    <dict>
        <key>blueGem</key>
        <string>rgb(44, 14, 140)</string>
    </dict>

创建一个 UIColor 扩展,以便在您的整个应用中使用新定义的颜色

extension UIColor {
    static let blueGem: UIColor = TypographyKit.colors["blueGem"]!
}

extension UIColor {
	static let fallback: UIColor = .black
	static let blueGem: UIColor = TypographyKit.colors["blueGem"] ?? fallback
}

您的命名颜色可以在 TypographyKit.plist 中定义排版样式时使用。

 	<key>ui-font-text-styles</key>
	<dict>
		<key>heading</key>
		<dict>
			<key>font-name</key>
			<string>Avenir-Medium</string>
			<key>point-size</key>
			<integer>36</integer>
			<key>text-color</key>
			<string>blueGem</string>
		</dict>
	</dict>

也可以在具体情况下覆盖排版样式的文本颜色

myLabel.text("hello world", style: .heading, textColor: .blue)

UIColor(named:)

TypographyKit 支持通过资产目录定义颜色。只需在配置文件中将颜色名称作为样式的一部分包含在内,如果在您的资产目录中找到该颜色,它将自动应用。

字母大小写

提供了有用的 String 扩展,可以轻松转换字母大小写。

let pangram = "The quick brown fox jumps over the lazy dog"
let upperCamelCased = pangram.letterCase(.upperCamel)
print(upperCamelCased)
// prints TheQuickBrownFoxJumpsOverTheLazyDog

具有许多便捷功能

let upperCamelCased = pangram.upperCamelCased()
// prints TheQuickBrownFoxJumpsOverTheLazyDog

let kebabCased = pangram.kebabCased()
// prints the-quick-brown-fox-jumps-over-the-lazy-dog

排版样式可以分配默认的字母大小写。

	<key>ui-font-text-styles</key>
	<dict>
		<key>heading</key>
		<dict>
			<key>font-name</key>
			<string>Avenir-Medium</string>
			<key>point-size</key>
			<integer>36</integer>
			<key>letter-case</key>
			<string>upper</string>
		</dict>
	</dict>

但是,有时您可能需要覆盖排版样式的默认字母大小写

myLabel.text("hello world", style: .heading, letterCase: .capitalized)

动态类型配置

默认情况下,对于 iOS 辅助功能设置中“更大文本”滑块上的每个刻度,您的字体磅值将增加 2 磅,但您可以选择性地指定您的 UIKit 元素如何响应 UIContentSizeCategory 中的更改。

您可以通过在您的 TypographyKit.json(或首选 TypographyKit.plist)文件中包含一个以键 typography-kit 开头的字典来指定您自己的磅值步长和乘数。

<key>typography-kit</key>
<dict>
    <key>minimum-point-size</key>
    <integer>10</integer>
    <key>maximum-point-size</key>
    <integer>100</integer>
    <key>point-step-size</key>
    <integer>2</integer>
    <key>point-step-multiplier</key>
    <integer>1</integer>
</dict>

您可以选择使用 minimum-point-sizemaximum-point-size 属性将字体磅值限制为下限和/或上限。

远程配置

TypographyKit 还允许您远程托管您的配置,以便您的颜色和字体样式可以动态更新。为此,只需将以下行添加到您的应用委托,以便在您的应用完成启动时调用它

TypographyKit.configurationURL = URL(string: "https://github.com/rwbutler/TypographyKit/blob/main/Example/TypographyKit/TypographyKit.plist")

您的排版样式和颜色将在下次您的应用启动时更新。但是,如果您需要更快地更新样式,您可以调用 TypographyKit.refresh()

作者

Ross Butler

许可证

TypographyKit 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件

附加软件

控件

AnimatedGradientView
AnimatedGradientView

框架

Cheats Connectivity FeatureFlags Skylark TypographyKit Updates
Cheats Connectivity FeatureFlags Skylark TypographyKit Updates

工具

Config Validator IPA Uploader Palette
Config Validator IPA Uploader Palette