嵌入在 UITextView 中的三列表
Posted
技术标签:
【中文标题】嵌入在 UITextView 中的三列表【英文标题】:Three Column Table embedded in UITextView 【发布时间】:2014-03-01 15:34:12 【问题描述】:我的项目包括在 UITextView 中显示一个文档。大部分文档都是非常直接的属性文本,我可以正常工作。文档的其他部分由普通文本组成,然后是一个 3 列的表格,其中 2 或 3 行基本上就在普通文本的中间。
在网上搜索了相当多的时间后,我似乎找不到任何关于任何人这样做的参考。
根据我读过的一些教程,我在想也许有一种方法可以创建一个由一堆 UILabel 组成的子视图,这些 UILabel 将是 UIView 的子视图(我们称之为 _tabularView
),我可以UITextView 顶部的布局。然后我可以以某种方式将_tabularView
的框架定位到它应该在的 UITextView 中的字符范围。然后我可以使用排除路径来防止文本进入视图。我唯一的问题是我不确定如何执行此操作,而且我还担心它不会随着其余内容滚动。
我的问题是,是否有人对如何完成此任务有任何建议,或者对将表格嵌入 UITextView 的更好方法提出建议。
【问题讨论】:
【参考方案1】:一种简单的可能性是使用 UIWebView 而不是 UITextView。用户无论如何都不能编辑表格,所以如果整个文本视图不应该是可编辑的,这是一个简单的选择。
如果文本视图 是可编辑的,则将表格绘制到图像上下文中,并将图像内联包含在文本视图中(仅限 ios 7,因为它为您提供了 Text 的全部功能成套工具)。该表仍然不可编辑,因为它是一个图像。但这不应该打扰您,因为您提议的标签也无法编辑。
我还应该提到,如果文本都很短(基本上是单个单词),并且如果您不想绘制网格线,则可以使用选项卡(iOS 7 的另一个新功能)来完成。
【讨论】:
我避免使用 UIWebView 有几个原因,主要是因为我想利用 Text Kit。我喜欢使用图像的想法,但我必须即时生成它。我不知道该怎么做。您是否知道有关将表格绘制到图像上下文中的教程或我可以参考的内容? 观看文本工具包上的 WWDC 视频。它们清楚地展示了如何动态布局文本。在图像上下文中执行此操作与它们显示的内容几乎没有什么不同。长话短说,你会打电话给drawWithRect:options:context:
。
如果问题是您根本不知道如何绘制图像,那么是时候动手了!这是所有 iOS 编程中非常重要的技术。阅读我书中的绘图章节:apeth.com/iOSBook/ch15.html
好的,这里的想法是我使用 UIKit/Core Graphics 在屏幕外的表格上绘制到 UIImage。然后,当我布局 UITextView 时,我将 UIImage 内联包含在适当的位置。我会试试看它是否能解决我的问题。【参考方案2】:
以下是解决问题的一些可能性:
也许使用自定义库来显示网格有点过头了,但请尝试 AQGridView。 您可以根据网格使用滚动视图和标签自己制作自定义 UI。类似的 SO 帖子 here. 正如马特在回答中所说,使用UIWebView
可能是最简洁的解决方案,因为您可以在 html 中显示表格。
最后,表格的内嵌图像选项。首先在UIView
(屏幕外)中制作数据表,然后将快照放入您可以内联添加的UIImage
。 Here 是针对此的 SO 帖子。
【讨论】:
以上是关于嵌入在 UITextView 中的三列表的主要内容,如果未能解决你的问题,请参考以下文章
试图从一个 Viewcontroller 中的 UILabel 获取 NSString 以放置在另一个 Viewcontroller 的 UITextView 中
当移动到嵌入在 UITableViewCell 中的 UITextView 中的新行时,光标消失
调整表格视图单元格以显示 UITextView 和 UIWebView
UITextView insertText 调用 shouldChangeTextInRange: replacementText: