TypographyKit 5.0.0

TypographyKit 5.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布时间最后发布2023年2月
SPM支持SPM

Ross Butler 维护。



  • rwbutler

TypographyKit

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

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

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

功能

  • 支持 SwiftUI 的 Dynamic Type。
  • 通过允许您在单个位置定义所有版式样式和应用程序颜色方案,帮助您在所有屏幕上保持应用程序的视觉一致性。
  • 远程托管和更新您的字体样式和颜色方案。 [详情]
  • 支持 UIKit 的 Dynamic Type(包括 UILabel、UIButton、UITextField 和 UITextView,以及一些对 NSAttributedString 的支持)。
    • 使用零代码(通过在 Interface Builder 中将 fontTextStyleName 键路径的 String 设置为您的版式样式的名称)支持动态类型。
  • 使用 JSON 或属性列表(.plist)来定义您的 TypographyKit 配置。
  • 使用 Palette 使程序性中使用相同的颜色方案在 Interface Builder 中可用。 [详情]
  • 将字母大小写定义为排版样式的一部分,可通过简单的字母大小写转换使用 字母大小写转换可用的部分

TypographyKit 5.0.0 的新功能是什么?

  • 对 SwiftUI 颜色的第一优先级支持 - 使用 TK.color(named:) 获取颜色。

  • 您可以为备用颜色指定一个在您忘记定义颜色时使用的颜色。使用 fallback-color 关键字指定在这种情况下应使用哪种颜色。

    • 设置:fallback-color
    • 默认值:明亮模式下的黑色,暗模式下的白色。
  • 您可以指定一个开发颜色,在开发构建中忘记定义颜色时使用。这个颜色可能与备用颜色不同。例如,您可能希望使用红色这样的易于注意的颜色,以便在开发构建中清楚地显示您忘记定义颜色。但是,您可能想确保这种红色颜色永远不会在生产构建中出现 - 这就是为什么开发颜色永远不会在生产构建中显示(而是使用备用颜色)。

    • 设置:development-color

    • 默认值:red

    • 设置:is-development

    • 默认值:在 #DEBUG 构建 true,否则 false

    • 设置:should-use-development-colors

    • 默认值:true

  • 您可以选择指定,如果开发应用构建未定义颜色,则崩溃。这使得您在开发期间忘记指定颜色值的可能性更低。此设置仅影响开发构建,因此您无需担心生产构建可能会崩溃。

    • 设置:should-crash-if-color-not-found
    • 默认值:false
  • 要开始使用框架,现在 import TypographyKit,然后按以下方式配置

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

另请参阅适用于支持 iOS 13 及以上版本的此方法的一个 async 版本

await TypographyKit.configure(with:
    TypographyKitConfiguration.default.setConfigurationURL(configurationURL)
)
  • 可以通过编程方式指定的所有配置属性也可以在 TypographyKit 配置文件中指定。
    • 注意:配置文件中的值将覆盖通过编程方式指定的值。

有关更改的详细列表,请参阅 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 项目中。

更多信息请参见这里:点击链接

使用方法

示例应用

示例目录 中有一个示例应用,提供了一些启动指南。

配置

将 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

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

如果您愿意使用字符串,可以通过将 UIKit 元素上的 key path fontTextStyleName 设置为表示您的 fontTextStyle 的字符串值来设置 fontTextStyle 属性 - 在上面的示例中,这将是 'heading'。

Setting the fontTextStyleName key path in Interface Builder

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

当设置一个无额外工作的 UIFont.TextStyle 时,您的 UILabel 和 UIButton 元素将自动响应 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支持通过资产目录定义颜色。只需在配置文件中将颜色的名称作为您样式的部分包含在文件中,如果颜色在您的资产目录中找到,它将自动应用。

字母大小写

提供了有用的字符串添加功能,可以轻松地转换字母大小写。

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更改。

您可以指定自己的点步进大小和乘数,通过将包含键《static-analysis》《TypographyKit">

<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 - 为现代 iOS 应用提供复古作弊码。
  • Connectivity - 在您的 iOS 应用中确定网络连接性的可达性功能得到改进。
  • FeatureFlags - 允许开发者配置功能标志,使用捆绑的或远程托管的 JSON 配置文件运行多个 A/B 或 MVT 测试。
  • FlexibleRowHeightGridLayout - 专为支持动态类型而设计的 UICollectionView 网格布局,允许每行的尺寸根据内容进行调整。
  • Hash - 轻量级生成消息摘要和 HMAC 的方法,支持包括 MD5、SHA-1、SHA-256 在内的常用哈希函数。
  • Skylark - 完全基于 Swift 的 BDD 测试框架,用于使用 Gherkin 语法编写 Cucumber 场景。
  • TailorSwift - 包含 Swift Core Library/Foundation 框架扩展的有用集合。
  • TypographyKit - 提供动态类型支持的 iOS 上一致的、可访问的视觉样式。
  • Updates - 自动检测应用程序更新,并且优雅地提示用户更新。
Cheats Connectivity FeatureFlags Skylark TypographyKit Updates
Cheats Connectivity FeatureFlags Skylark TypographyKit Updates

工具

  • Clear DerivedData - 工具可快速通过从终端输入 cdd 来清除您的 DerivedData 目录。
  • Config Validator - Config Validator 验证并上传您的配置文件,并在 CI 过程中作为清除 CDN 的一部分。
  • IPA Uploader - 将您的应用程序上传到 TestFlight 和 App Store。
  • Palette - 使您的 TypographyKit 颜色调色板在 Xcode Interface Builder 中可用。
Config Validator IPA Uploader Palette
Config Validator IPA Uploader Palette