Swift 包 Tanrei 提供 SwiftUI 视图、主题环境和生成的令牌常量。它支持 iOS 17 和 macOS 14 及更高版本,并按 Swift 6 语言模式编写。
尚未发布
Tanrei 尚未发布到 Swift Package Manager。一个平台在跟上当前的规格之后才会发布,在此之前 SwiftUI 的 CI 处于暂停状态。下文“从源码”一节展示如何从 chnotchy/tanrei 添加这个包;“发布之后”一节展示届时的安装方式。
目前无法构建
SwiftUI 包尚未跟上当前的规格和令牌:它的源码是针对较早版本的生成令牌代码编写的,无法与现在的令牌代码一起编译。在它跟上之前,它的 CI 处于暂停状态,状态页面把它的组件标记为“待跟进”。下面的步骤说明如何把它添加到应用中;等这个包跟上之后,这些步骤就能用了。
把仓库克隆到你的应用旁边,再把这个克隆添加为本地包:在 Xcode 中选择 File → Add Package Dependencies… → Add Local…,然后选择包含 Package.swift 的文件夹;或者写在你自己的 Package.swift 中:
dependencies: [
.package(path: "../tanrei")
],
targets: [
.target(name: "App", dependencies: [.product(name: "Tanrei", package: "tanrei")])
]使用 .package(url: "https://github.com/chnotchy/tanrei", branch: "main"),就会跟随仓库,而不是本地的克隆。
在 Xcode 中选择 File → Add Package Dependencies… 并输入仓库的 URL,或者把它添加到 Package.swift:
dependencies: [
.package(url: "https://github.com/chnotchy/tanrei", from: "<version>")
],
targets: [
.target(name: "App", dependencies: [.product(name: "Tanrei", package: "tanrei")])
]包清单位于仓库根目录,因为 Swift Package Manager 从那里解析 Git 依赖。Swift 的发布版本将使用不带前缀的语义化版本标签。
import SwiftUI
import Tanrei
struct DeployView: View {
@State private var isDeploying = false
var body: some View {
TanreiButton("部署", variant: .filled, action: { isDeploying = true })
.disabled(isDeploying)
}
}action: 对应规格中的 click;尾随闭包则是 icon: 插槽(TanreiButton("部署", action: deploy) { Image(systemName: "arrow.up") })。没有 disabled 参数。Tanrei 遵循 SwiftUI 自身的 .disabled(_:) 环境,因此禁用一个容器就会禁用其中的按钮,与系统控件的行为一致。
默认情况下,Tanrei 跟随系统的配色方案和“增强对比度”这项辅助功能设置。两者都可以用主题修饰符覆盖:
ContentView()
.tanreiTheme(TanreiTheme(appearance: .dark, contrast: .high))如果应用注册了相应的字体,字阶会使用 Inter(日文使用 Noto Sans JP,代码使用 Roboto Mono),否则回退到系统字体。文本样式按层级命名,位于环境中的系统对象上(@Environment(\.tanreiSystem) private var system):章节标题用 .tanreiTextStyle(system.typescale.heading2),连续文本用 system.typescale.body,控件用 system.typescale.label。它们会随动态字体(Dynamic Type)缩放;.tanreiTextStyle(system.typescale.heading1, emphasized: true) 会在字重上加上标题系列的强调级差。圆角遵循 system.shape.cornerSmoothing:为 0 时是 .circular,大于 0 的任何值都使用操作系统的 .continuous 圆角。