界面Swift
SwiftShaders
面向 SwiftUI view 的 Metal shader 效果:颜色、模糊、扭曲、波纹和过渡。
7星标数最新版本: v2.0.0更新时间: 2026年10月14日
支持平台:iOS 17macOS 14
许可证: MIT
一个面向 iOS 17+ 和 macOS 14+ 的无依赖 Swift package。每种效果都是建立在 SwiftUI 自身的 colorEffect、distortionEffect 和 layerEffect 之上的单个 view modifier、fill 或 transition,因此可以用在任何 view 上。每个公开参数在到达 GPU 之前都会被检查,效果本身也由渲染 view 并比较像素的测试来验证。
功能特性
- 26 个 view modifier、3 种 fill 和 5 种 transition,背后由 31 个 [[ stitchable ]] Metal 函数支撑
- 参数检查:范围会被夹断,NaN 会关闭某个效果,sample offset 被限制在 view 的对角线范围内,gradient map 最多使用 256 种颜色
- 干净的边缘:比较相邻像素的效果只读取 view 内部的内容,颜色效果会保留文字的抗锯齿透明度
- 面向动画效果的 ShaderTime(.animated、.animated(speed:)、.fixed(_:)),在 Reduce Motion 开启时效果会停在第一帧
- 跟随点击位置扩散的波纹效果,不会影响 view 自身的手势
- 可直接调用 shader 函数的 ShaderLibrary.swiftShaders,以及用于确认构建工具是否编译了它们的 SwiftShaders.isMetalLibraryAvailable
- 77 个在 macOS 和 iPhone 模拟器上运行的 Swift Testing 测试;其中一个库测试会把编译后的函数名与 Swift 代码调用的名称做比较
- 包含三篇文章的 DocC 文档目录,以及面向 iOS 和 macOS 的 ShaderGallery 示例应用
快速开始
swift
1import SwiftShaders2import SwiftUI3 4struct ContentView: View {5 var body: some View {6 Image(systemName: "mountain.2.fill")7 .font(.system(size: 96))8 .foregroundStyle(.blue)9 .padding(40)10 .background(.blue.opacity(0.15), in: .rect(cornerRadius: 24))11 .halftone(dotSize: 6, ink: .blue, paper: .white)12 }13}安装
Xcode (File › Add Package Dependencies…)
text
1https://github.com/muhittincamdali/SwiftShaders.gitSwift Package Manager
swift
1.package(url: "https://github.com/muhittincamdali/SwiftShaders.git", from: "2.0.0")截图






时间线
仓库以三种效果开放;v1.0.0 标签打在第一个 commit 上,并在同一周内扩展
删除了 shader 源码;package 被精简为占位代码
重建开始:删除了占位源码、模板和旧测试
v2.0.0:在 SwiftUI 的 shader modifier 基础上从头重写,包含 31 个 Metal 函数、像素测试、DocC 和一个示例应用