求助,关于图文混排。

2014-11-09 15:33:11 +08:00
 cielpy
最近项目里用到图文混排相关的,苦恼了好久没搞出来。没什么头绪,求方法求建议。
基本样式如下。

段落中间会按照返回数据中的链接位置显示图片,图片大小不定,需要居中显示。
查了下的实现方法,NSAttributedStrings+自定义的NSTextAttachment可以排版,现在的问题是算的高度总是不对。排版的代码贴上,求建议。。以及遇到比较棘手的问题的时候,大家一般都是怎么解决的。。。
自定义的NSTextAttachment
https://gist.github.com/cielpy/6a9bb316f6f7dd840bd4
以及实现代码
https://gist.github.com/cielpy/0444a576e53f5d88e533
4090 次点击
所在节点    iDev
4 条回复
chundong
2014-11-09 21:51:44 +08:00
为什么不用UIWebview来做显示了?
cielpy
2014-11-09 22:17:30 +08:00
@chundong 网页高度获取,加载速度,还要有交互,对前端不熟。。所以想用原生的API来实现,不过HTML排版真方便啊。。
jox
2014-11-13 11:59:53 +08:00
用UIWebview性能不行,直接用textkit啊。你的实现代码看不到,你需要parse这个富文本,遇到图片就将其弄成附件插入到文本中,只设置附件的bounds,不要设为image,将bounds设为宽度与屏幕或者superview的宽度相等,content mode设为aspect fit,然后直接拿textkit渲染,渲染完之后使用uiimageview找到所有附件的位置渲染图片,把image view设为你画文字的view的subview
jox
2014-11-13 12:05:12 +08:00
或者也可以使用core text渲染,遇到图片就将在文本中插入特殊字符,比如NSAttachmentCharacter,同时设定居中显示,宽度,高度啥的,记录所有图片的glyphIndex和图片的数据,文字渲染完之后再渲染图片。

core text是C接口,用起来比较麻烦,新出的textkit能很好地实现富文本排版,但是我发现用UITextView渲染会遇到一些奇怪的问题。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/145114

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX