V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
cielpy
V2EX  ›  iDev

求助,关于图文混排。

  •  
  •   cielpy ·
    EkkoG · 2014-11-09 15:33:11 +08:00 · 3920 次点击
    这是一个创建于 3458 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近项目里用到图文混排相关的,苦恼了好久没搞出来。没什么头绪,求方法求建议。
    基本样式如下。
     段落中间会按照返回数据中的链接位置显示图片,图片大小不定,需要居中显示。
    查了下的实现方法,NSAttributedStrings+自定义的NSTextAttachment可以排版,现在的问题是算的高度总是不对。排版的代码贴上,求建议。。以及遇到比较棘手的问题的时候,大家一般都是怎么解决的。。。
    自定义的NSTextAttachment

    以及实现代码
    4 条回复    2014-11-13 12:05:12 +08:00
    chundong
        1
    chundong  
       2014-11-09 21:51:44 +08:00
    为什么不用UIWebview来做显示了?
    cielpy
        2
    cielpy  
    OP
       2014-11-09 22:17:30 +08:00
    @chundong 网页高度获取,加载速度,还要有交互,对前端不熟。。所以想用原生的API来实现,不过HTML排版真方便啊。。
    jox
        3
    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
        4
    jox  
       2014-11-13 12:05:12 +08:00
    或者也可以使用core text渲染,遇到图片就将在文本中插入特殊字符,比如NSAttachmentCharacter,同时设定居中显示,宽度,高度啥的,记录所有图片的glyphIndex和图片的数据,文字渲染完之后再渲染图片。

    core text是C接口,用起来比较麻烦,新出的textkit能很好地实现富文本排版,但是我发现用UITextView渲染会遇到一些奇怪的问题。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4947 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:48 · PVG 17:48 · LAX 02:48 · JFK 05:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.