Ios UITextView中嵌入的三列表

Ios UITextView中嵌入的三列表,ios,objective-c,cocoa-touch,textkit,Ios,Objective C,Cocoa Touch,Textkit,我的项目包括在UITextView中显示文档。文档的大部分内容都是非常直接的文本,我的工作很好。文档的其他部分由普通文本组成,然后是一个3列表,在正常文本的中间基本上有2行或3行。 在花了相当长的时间在网上搜索之后,我似乎找不到任何人做过类似的事情 根据我读过的一些教程,我想可能有一种方法可以创建一个子视图,该子视图由一堆UILabel组成,这些UILabel将是UIView的子视图(我们称之为\u tablerView),我可以在UIExtView上进行布局。然后我可以将\u tablervi

我的项目包括在UITextView中显示文档。文档的大部分内容都是非常直接的文本,我的工作很好。文档的其他部分由普通文本组成,然后是一个3列表,在正常文本的中间基本上有2行或3行。

在花了相当长的时间在网上搜索之后,我似乎找不到任何人做过类似的事情

根据我读过的一些教程,我想可能有一种方法可以创建一个子视图,该子视图由一堆UILabel组成,这些UILabel将是UIView的子视图(我们称之为
\u tablerView
),我可以在UIExtView上进行布局。然后我可以将
\u tablerview
的框架定位到UITextView中它应该所在的字符范围。然后我可以使用一个排除路径来防止文本进入视图下。我唯一的问题是,我不确定该怎么做,我还担心它不会和其他内容一起滚动


我的问题是,是否有人对如何实现这一点有任何建议,或者有人对在UITextView中嵌入表的更好方法有任何建议。

一个简单的可能性是使用UIWebView而不是UITextView。用户无论如何都不能编辑表,因此如果整个文本视图不应该是可编辑的,那么这是一个简单的选择

如果文本视图是可编辑的,则将表格绘制到图像上下文中,并将图像内联到文本视图中(仅限iOS 7,因为它提供了文本工具包的全部功能)。该表仍然无法编辑,因为它是一个图像。但这不应该困扰您,因为您建议的标签也不可编辑


我还应该提到,如果文本都很短(基本上是单字),如果您不想画网格线,您可以使用制表符(iOS 7的另一项新功能)来完成。以下是一些解决问题的可能性:

  • 也许使用自定义库来显示网格会有些过分,但请尝试
  • 您可以根据网格使用滚动视图和标签自己创建自定义UI。类似的SO post
  • 正如Matt在回答中所说,使用UIWebView可能是最干净的解决方案,因为您可以用html显示表格
  • 最后,表的内联图像选项。首先在
    ui视图
    (屏幕外)中创建数据表,并在
    ui图像
    中创建快照,您可以在线添加该快照就是这样的帖子

我之所以避免使用UIWebView,有几个原因,主要是因为我想利用文本工具包。我喜欢使用图像的想法,但我必须动态生成它。我不知道怎么做。你知道关于在图像上下文中绘制表格的教程或我可以参考的东西吗?在文本工具包上观看WWDC视频。它们清楚地显示了如何动态地布局文本。在图像上下文中执行此操作与它们显示的内容几乎没有什么不同。长话短说,您将调用
drawWithRect:options:context:
。如果问题是您根本不知道如何绘制图像,那么是时候了!这是所有iOS编程中非常重要的技术。阅读我书中的绘图章节:好的,这里的想法是我使用UIKit/Core图形在屏幕外的表格中绘制UIImage。然后,当我布局UITextView时,我会将UIImage内联到适当的位置。我会试试看它是否解决了我的问题。