GitHub - stackotter/swift-cross-ui:一个受 SwiftUI 启发的跨平台声明式 UI 框架。

这是一个用于在 Swift(5.10+)中创建跨平台应用的类似 SwiftUI 的框架SwiftCrossUI的介绍:

  • 主要特点:可在不同操作系统(如 macOS、Linux、Windows、iOS、tvOS)上创建原生外观的应用,一次编写代码即可。
  • 社区与支持:讨论在SwiftCrossUI Discord 服务器进行,可通过成为赞助者支持该项目。
  • 文档与示例:文档网站为[https://stackotter.github.io/...],有基本示例和更多示例,运行示例需使用Swift Bundler,也可使用 SwiftPM,但存在一些限制。
  • 后端介绍:有多种后端,如[DefaultBackend]可适配目标操作系统,还包括[AppKitBackend](原生 macOS 后端)、[UIKitBackend](原生 iOS & tvOS 后端)、[WinUIBackend](原生 Windows 后端)、[GtkBackend](适用于 Linux、macOS 和 Windows,需安装 gtk 4)、[Gtk3Backend](用于较旧的 Linux 发行版,需安装 gtk 3,在 macOS 上较 buggy),使用[DefaultBackend]时可通过设置SCUI_DEFAULT_BACKEND环境变量在编译时覆盖底层后端。

基本示例代码如下:

import PackageDescription

let package = Package(
    name: "YourApp",
    dependencies: [
       .package(url: "https://github.com/stackotter/swift-cross-ui", branch: "main")
    ],
    targets: [
       .executableTarget(
            name: "YourApp",
            dependencies: [
               .product(name: "SwiftCrossUI", package: "swift-cross-ui"),
               .product(name: "DefaultBackend", package: "swift-cross-ui"),
            ]
        )
    ]
)

import SwiftCrossUI
import DefaultBackend

@main
struct YourApp: App {
    @State var count = 0

    var body: some Scene {
        WindowGroup("YourApp") {
            HStack {
                Button("-") { count -= 1 }
                Text("Count: \(count)")
                Button("+") { count += 1 }
            }.padding()
        }
    }
}
阅读 16
0 条评论