#2d-graphics #swift-ui #skia #rasterization #cross-platform #experimental #perform

swiftui-skia

swiftui-skia 是一个基于 Skia 的 2D 图形 SwiftUI 渲染库。它基于 Rust 实现,通过软件光栅化来执行渲染。它在跨平台适应性方面比硬件光栅化表现更好,但仍然是一个实验性项目。并且它完全基于 SwiftUI 语法。

9 个版本

新版本 0.0.4 2024 年 8 月 14 日
0.0.3 2024 年 7 月 21 日
0.0.2 2024 年 6 月 16 日
0.0.2-beta.12024 年 6 月 15 日
0.0.1 2024 年 6 月 15 日

154图形 API

Download history 315/week @ 2024-06-12 47/week @ 2024-06-19 1/week @ 2024-06-26 20/week @ 2024-07-03 110/week @ 2024-07-17 31/week @ 2024-07-24

141 每月下载量

MIT 许可证

115KB
3K SLoC

Swift 2.5K SLoC // 0.0% comments Rust 291 SLoC // 0.0% comments Shell 25 SLoC // 0.1% comments

SwiftUI Skia

license crates

swiftui-skia 是一个基于 Skia 的 2D 图形 SwiftUI 渲染库。它基于 Rust 实现,通过软件光栅化来执行渲染。它在跨平台适应性方面比硬件光栅化表现更好,但仍然是一个实验性项目。并且它完全基于 SwiftUI 语法。

基于 Skia 的 2D 图形 SwiftUI 渲染库 —— 使用 Rust 语言实现纯软件光栅化渲染,相比原生光栅化具有更好的跨平台适应性,不过目前仍然是一个实验项目;此外使用层面完全基于 SwiftUI 语法。

使用方法

import SwiftUI
import SwiftUISkia

struct ContentView: View {
    var body: some View {
        SwiftUISkia.Surface(width: 360, height: 360) {
            SwiftUISkia.Rect(x: 10, y: 220, width: 30, height: 30, style: "fill", color: "cyan") {}
            SwiftUISkia.Image(image: "https://raw.githubusercontent.com/rustq/swiftui-skia/main/examples/first-example/first-example/Assets.xcassets/swiftui-96x96_2x.imageset/swiftui-96x96_2x.png", x: 0, y: 0, width: 64, height: 64, blur: 5, brighten: 98) {}
            SwiftUISkia.RoundRect(x: 220, y: 50, r: 10, width: 80, height: 80, style: "stroke", color: "fuchsia") {}
            SwiftUISkia.Points(points: [
                [138, 10],
                [178, 90],
                [266, 103],
                [202, 165],
                [217, 254],
                [138, 212],
                [59, 254],
                [74, 165],
                [10, 103],
                [98, 90],
                [138, 10],
            ], strokeWidth: 1, style: "fill", color: "rgba(200, 255, 0, 0.7)") {}
            SwiftUISkia.Circle(cx: 200, cy: 220, r: 70, style: "stroke", color: "violet") {}
            SwiftUISkia.Circle(cx: 200, cy: 220, r: 50, style: "fill", color: "violet") {}
            SwiftUISkia.Text(text: "Hello SwiftUI Skia!",x: 80, y: 0, fontSize: 16, color: "black", maxWidth: 60) {}
        }
    }
}

Rust 工作空间中的安装

$ cargo add swiftui-skia
$ cargo install --path .

$ ln -s ~/.cargo/registry/src/index.crates.io-{YOUR CRATE HASH}/swiftui-skia-0.0.4 swiftui-skia
$ cargo install cargo-lipo

$ cargo install swift-bridge-cli
$ cd swiftui-skia

$ rustup target add x86_64-apple-darwin aarch64-apple-darwin aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim

$ ./build-rust.sh

$ ./build-bridge.sh

添加包依赖

框架、库和嵌入式内容

△ SwiftUISkia

△ SwiftUISkiaBridge

许可证

MIT

依赖项

~22MB
~371K SLoC