NiceComponents 是一个简单的库,提供一些美观的 SwiftUI 组件,帮助你快速启动你的下一个项目。🚀
使用一些合理的默认组件快速开始你的原型设计,然后稍后回来定制你的应用程序的外观和感觉——所有操作都在一个地方完成。
你可以克隆并运行示例项目,查看所有默认组件的示例,以及一个更定制化的登录屏幕的示例,以及如何定制每个组件的演示。
当你刚开始你的项目时,你应该能够通过直接使用我们的开箱即用组件获得一些不错的结果。
NiceComponents 由几个基本部分组成
NiceButton
或 NiceText
。import NiceComponents
struct DemoView: View {
var body: some View {
NiceText("I'm a nice big title!", style: .screenTitle)
NiceButton("And I'm a nice little button", style: .primary) {
doTheThing()
}
}
}
我们提供以下文本和按钮样式,助你入门
当你准备开始在你自己的组件上添加你的个性化风格时,你有几个选项,这取决于你想要改变多少。
如果你想更改*所有*组件实例,或更改全局变量,如你的 ColorTheme 或 ColorStyle,我们建议创建一个自定义配置,你可以在你的应用程序首次启动时设置它。请注意,一旦你设置了这个配置,你将无法更新它。
在多个自定义应用于同一组件的情况下,*最具体的*自定义将优先。
import NiceComponents
@main struct ExampleApp: App {
init() {
var newConfig = Config()
newConfig.bodyTextStyle = NiceTextStyle(
color: Color(hex: "FFA71A"),
size: 16
)
Config.current = newConfig
}
}
如果你想创建一个新组件,或扩展一个现有组件,你所需要做的就是添加一个新的样式
extension NiceTextStyle {
static var bodyBold: NiceTextStyle {
Config.current.bodyTextStyle
.with(weight: .bold)
}
}
如果你只需要更改一次性的 UI 元素,每个样式都带有一个方便的 mutator 函数,允许你定制它。
NiceText(
"Customize it with `with`",
style: .body.with(weight: .semibold)
)
NiceText(
"Customize it with `with`",
style: NiceTextStyle(
color: Color(hex: "FFA71A")
with: .body,
font: "Impact",
size: 20
)
)
}
除了能够定制或扩展 NiceComponents 提供的每个预设样式外,我们还提供了两种更改你的颜色调色板的方法。
你可以在创建自定义 Config 时通过将 ColorTheme 和/或 ColorStyle 传递到构造函数中来设置它们。
在这两个选项中,ColorTheme 是更通用的选项,允许你一次性更改应用于各种不同组件和位置的颜色。这里的命名和用法很大程度上受到了出色的 Material Design 调色板的影响。
ColorTheme 采用你在资源目录中声明的颜色,并赋予它们不与特定 UI 元素绑定的语义含义。
我们建议在资源目录中声明你的颜色,并从那里拉取它们,以使支持浅色和深色模式变得轻而易举。
ColorStyle 语义化地描述默认应用于所有组件的颜色,这里的更改将优先于对 ColorTheme 所做的更改,但如果未指定,则默认为你的 ColorTheme。
在大多数情况下,你可能只需更改你的 ColorTheme 并允许这些更改级联到不同的 UI 元素中即可,但如果你需要更多地控制特定按钮等元素的颜色,这里就是你的地方。
如果你想全局更改你的应用程序中的字体,你可以更改 Config 的 textStyle,所有预设样式都将尊重你的新样式。
请注意,只有 bodyText
将使用默认的 textStyle
大小和粗细。
NiceComponents 通过 **Swift Package Manager** 提供。要安装它,请按照以下步骤操作
git@github.com:steamclock/niceComponents.git
由于 NiceComponents 使用一些宏来自动为某些类生成初始化器,你可能需要在你的 xcodebuild
调用中添加 `-skipMacroValidation` 以使其工作。
鉴于从 Nice Components 1 到 2 的更改的大小和范围,迁移可能是一个相当大的过程。好消息是,很多工作可以通过使用好用的“查找和替换”来完成。
要迁移,你将需要