前往 https://indiegoodies.com/ 查看
RoughSwift 允许我们在 SwiftUI 中轻松创建手绘、素描、漫画风格的图形。
CAShapeLayer 生成 UIBezierPath有一个 示例 项目,您可以进一步探索。
在 draw 函数中使用 generator 来指定要渲染的形状。返回的 CALayer 包含正确 size 的渲染结果,并在每次指示 generator 时更新。
以下是如何绘制一个绿色矩形:
RoughView() .fill(.yellow) .fillStyle(.hachure) .hachureAngle(-41) .hachureGap(-1) .fillWeight(-1) .stroke(.systemTeal) .strokeWidth(2) .curveTightness(0) .curveStepCount(9) .dashOffset(-1) .dashGap(-1) .zigzagOffset(-9)
CALayer 的优点是我们可以进一步对其进行动画、变换(平移、缩放、旋转)并将它们组合成更强大的形状。
Options 用于自定义形状。它是不可变的结构体,每次应用于一个形状。以下属性可配置:
RoughSwift 支持所有基本形状,包括 SVG 路径:
大多数情况下,我们使用 fill 作为形状内部的纯色填充,stroke 作为形状边框,fillStyle 作为素描填充样式。
可用的填充样式:
以下是如何以不同填充样式绘制圆形。默认填充样式是 hachure:
struct StylesView: View { var body: some View { LazyVGrid(columns: [.init(), .init(), .init()], spacing: 12) { RoughView() .fill(.red) .fillStyle(.crossHatch) .circle() .frame(width: 100, height: 100) RoughView() .fill(.green) .fillStyle(.dashed) .circle() .frame(width: 100, height: 100) RoughView() .fill(.purple) .fillStyle(.dots) .circle() .frame(width: 100, height: 100) RoughView() .fill(.cyan) .fillStyle(.hachure) .circle() .frame(width: 100, height: 100) RoughView() .fill(.orange) .fillStyle(.solid) .circle() .frame(width: 100, height: 100) RoughView() .fill(.gray) .fillStyle(.starBurst) .circle() .frame(width: 100, height: 100) RoughView() .fill(.yellow) .fillStyle(.zigzag) .circle() .frame(width: 100, height: 100) RoughView() .fill(.systemTeal) .fillStyle(.zigzagLine) .circle() .frame(width: 100, height: 100) } } }
SVG 形状可能比指定的图层大小大或小,因此 RoughSwift 会将它们缩放到您请求的 size。这样我们就可以组合和变换 SVG 形状。
struct SVGView: View { var apple: String { "M85 32C115 68 239 170 281 192 311 126 274 43 244 0c97 58 146 167 121 254 28 28 40 89 29 108 -25-45-67-39-93-24C176 409 24 296 0 233c68 56 170 65 226 27C165 217 56 89 36 54c42 38 116 96 161 122C159 137 108 72 85 32z" } var body: some View { VStack { RoughView() .stroke(.systemTeal) .fill(.red) .draw(Path(d: apple)) .frame(width: 300, height: 300) } } }
有了所有基本形状,我们可以创造更美丽的东西。唯一的限制是你的想象力。
以下是如何创建图表:
struct Chartview: View { var heights: [CGFloat] { Array(0 ..< 10).map { _ in CGFloat.random(in: 0 ..< 150) } } var body: some View { HStack { ForEach(0 ..< 10) { index in VStack { Spacer() RoughView() .fill(.yellow) .rectangle() .frame(height: heights[index]) } } } .padding(.horizontal) .padding(.bottom, 100) } }
在幕后,我们组合了 Generator 和 Renderer。
我们可以实例化 Engine 或使用共享的 Engine 以提高内存效率,来创建 Generator。每次我们指示 Generator 绘制一个形状时,引擎都会努力计算出 Drawable 中素描形状的信息。
这些概念的命名遵循 rough.js,以便更好地理解代码。
对于 iOS,有一个 Renderer 可以处理 Drawable 并将其转换为 UIBezierPath 和 CALayer。将来会有更多 Renderer 可以渲染到图形上下文、图像以及其他平台如 macOS 和 watchOS。
let layer = CALayer() let size = CGSize(width: 200, heigh: 200) let renderer = Renderer(layer: layer) let generator = Engine.shared.generator(size: bounds.size) let drawable: Drawable = Rectangle(x: 10, y: 10, width: 100, height: 50) let drawing = generate.generate(drawable: drawable) renderer.render(drawing: drawing)
在您的 Package.swift 文件的依赖项中添加以下行:
.package(url: "https://github.com/onmyway133/RoughSwift"),
Khoa Pham, onmyway133@gmail.com
我们非常欢迎您为 RoughSwift 做出贡献,请查看 CONTRIBUTING 文件了解更多信息。
RoughSwift 基于 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。

一站式AI短剧创作平台
Pixmax专注打造下一代“ AI 视觉创作引擎”,整合行业顶尖 AI 大模型、工工业级精准控制及企业级协同管理功能,是全方位的 AI 内容创作平台。


字节跳动旗下 AI 智能助手
字节跳动旗下 AI 智能助手


GPT充值
支持 ChatGPT Plus / Pro 充值服务,支付便捷,自动发货,售后可查。


AI 图片生成平台
GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。


你的AI Agent团队
Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。


全球首个AI音乐社区
音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。


阿里Qoder团队推出的桌面端AI智能体
QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。


一站式搞定所有学习需求
不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。


为AI短剧协作而生
专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。


能听懂你表达的视频模型
Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号