Shaft 是一个跨平台 UI 框架,专为高性能应用程序设计,注重简洁性和可定制性。
最新✨:一篇详细介绍 Shaft 的博客文章已发布在这里。
MacOS:Shaft 需要安装 Xcode。安装 Xcode 后,如果遇到类似 xcrun: error: unable to lookup item...
的错误,请尝试按照这些说明更新您的命令行工具。
Linux:
sudo apt install ninja-build pkg-config libasound2-dev libpulse-dev libaudio-dev libjack-dev libsndio-dev libusb-1.0-0-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev libunwind-dev libpipewire-0.3-dev libdecor-0-dev libfontconfig-dev
Windows:按照官方指南安装 Swift 应该足够了。但是,Windows 稳定版本的 Swift 存在一些问题,可能会阻止 Shaft 运行。强烈建议使用开发快照版本。您可以在这里找到最新的快照。
git clone https://github.com/ShaftUI/Shaft.git
cd Shaft
swift package plugin setup-skia
swift run Playground
这些命令将启动内置的 Playground 应用程序,该应用程序既是交互式演示,又是 Shaft 框架的全面文档。
setup-skia
命令会将预构建的 Skia 二进制文件下载到./.shaft
目录供软件包使用。将来,当 swift-package-manager#7035 取得进展时,我们可能会取消此步骤。
要使用 Shaft 创建一个新项目,CounterTemplate 是一个很好的起点。
无需构建基础设施或特殊工具链 - 仅仅是一个包含引擎和框架的常规 Swift 包,使其易于自定义、扩展和适应您的特定需求。
专为苛刻的工作负载而构建,具有原生多线程支持、直接低级图形 API 访问以及通过 ARC 进行确定性内存管理。可以毫不费力地从简单的应用程序扩展到复杂的、资源密集型的应用程序。
Shaft 的模块化设计可以轻松集成自定义后端和渲染器。这种灵活性允许独特的用例,例如基于终端的 UI 或创建 Wayland 合成器,使开发人员能够调整框架以适应专门的用例。
用 @Observable
标记的数据可以在值更改时自动更新 UI。该框架会自动跟踪这些对象,并仅高效地刷新受影响的 UI 组件,从而无需手动状态管理并减少样板代码。这种反应式方法可确保您的 UI 以高性能方式与您的数据保持同步
@Observable class Counter {
var count = 0
}
let counter = Counter()
class CounterView: StatelessWidget {
func build(context: any BuildContext) -> any Widget {
Column {
Text("Count: \(counter.count)")
Button {
counter.count += 1
} child: {
Text("Increment")
}
}
}
}
更多文档可以在 Playground 应用程序中找到。