1

我正在尝试创建一个 Markdown 编辑器,因为我对学习 TextKit 很感兴趣。我只在 iOS 设备上工作,所以我只有 UIKit 框架可供我使用,我还观看了这个WWDC18 视频,它解释了使用 TextKit 采用的一些最佳实践。起初,我真的很想知道如何获得与视频在 22:13 显示的相同结果。

视频中开发人员显示的代码使用AppKit并通过将代码部分替换为 a并为后者NSMutableParagraphStyle提供自定义来将代码包装在该矩形中。NSTextBlock你可以猜到,我不能继承NSTextBlockUIKit因此我不能复制所示的例子。

不过,我有一些更难问的问题,我真正想要复制的是 GitHub 应用程序代码块样式,这是我想要复制的最终结果:

在此处输入图像描述

如您所见,它应该有一个带有自定义背景颜色的圆角矩形,并且它需要可滚动以使代码尽可能多地扩展(我对语法突出显示不感兴趣)。

NSTextBlock如果在 中不可用,我该如何实现这样的目标UIKit

目前我所做的只是覆盖NSTextStorage以使用 custom 为代码部分设置正确的字体NSAttributedString

4

1 回答 1

0

我在应用程序中进行了调查,发现它是由 GitHawk 的创建者 Ryan Nystrom 管理的,然后才迁移到 GitHub。GitHawk 降价阅读器与您在 GitHub 应用程序中找到的非常相似,有趣的是 GitHawk 是开源的,因此我查看了该代码并试图了解如何复制它。

事实证明,GitHawk 大量使用 IGListKit 框架并解析ListDiffable元素中的 markdown,特别是将代码块ListDiffables 提供给ListSectionController创建水平UIScrollView显示代码的 a。

我放弃了尝试对此进行更多了解,因为 GitHawk 代码真的很纠结,提取特定功能真的很难,几乎不可能。

于 2021-04-11T20:28:51.327 回答