如何使用 SwiftUI 沿圆形路径绘制文本

Posted

技术标签:

【中文标题】如何使用 SwiftUI 沿圆形路径绘制文本【英文标题】:How to draw text along circular path using SwiftUI 【发布时间】:2020-02-13 05:32:53 【问题描述】:

我需要一些关于如何使用 SwiftUI 在循环路径中生成单行文本的帮助。我正在尝试复制这些Image 中的弯曲文本。这在 SwiftUI 中可行吗?谢谢。

【问题讨论】:

这能回答你的问题吗? Draw text along circular path in Swift for ios 没有简单的内置方法。 Tobias Due Munk 谈到在this talk 中从大约 9 分 20 秒开始沿着一个圆圈放置文本。他的代码may be available soon。 Rob Napier 的 CurvyText 项目也可能会有所帮助。 【参考方案1】:

找到了我的问题的解决方案。感谢 Tobias Due Munk 使用 SwiftUI 发布了他的 CurvedText 原型。他的解决方案可以在这里找到https://git.kabellmunk.dk/prototyping-custom-ui-in-swiftui-talk/custom-ui-prototype-in-swiftui。

【讨论】:

git.kabellmunk.dk/prototyping-custom-ui-in-swiftui-talk/… 我相信 Tobias 将代码移到这里:github.com/duemunk/CrookedText【参考方案2】:

不,到目前为止,Swift UI 还没有提供任何方法来做到这一点。所以正如@fulvio 指出的那样,你必须这样做Swift UIKit 方式。

您可以稍后使用 UIViewRepresentable 将其集成到您的 SwiftUI 项目中 Refer Swift UI interfacing with UIKit Apple Inc.

【讨论】:

我尝试将其作为 UIViewRepresentable 进行,但 SwiftUI 似乎不支持 UIGraphicsGetImageFromCurrentImageContext()。 那我猜你不能,但肯定没有任何 Swift ui 方式。【参考方案3】:

    计算每个字符的位置,见How to get position of each character in SwiftUI Text及相关解答和讨论,了解局限性

    在第 1 步(使用沿路径作为参数)

    定位和旋转每个字符就像这里Positioning View using anchor point

我知道 用链接回答,正如 "Ru Chem Chong" 已经提到的,不是最好的,但请回答你的问题这是一个非常复杂的任务,解释需要的不仅仅是这里的可用空间。

【讨论】:

以上是关于如何使用 SwiftUI 沿圆形路径绘制文本的主要内容,如果未能解决你的问题,请参考以下文章

如何使文本适合圆形/图像SwiftUI的边界

如何在 SwiftUI 中制作斜体圆形样式系统文本?

在 SwiftUI 中沿路径填充颜色渐变

沿圆形绘制时,寻找角度矩形将占据(见图)

SwiftUI 如何使圆形动画双向工作

如何使 TextView 具有完整的圆形背景,无论它显示多长的文本