• DTCoreText


    背景:使用DTCoreText实现epub阅读器的内容排版

    基础准备:coretext,HTML+CSS渲染机制,epub文件格式

    一:ios端epub实现:主要是两种,coretext,webview,二者的对比不再赘述,简单点说就是,coretext需要自己去解析html和对应的css样式,并合并起来使用coretext展示,但是效率高。webview可以直接loadURL,可以自己指定样式,但是效率低。

    二、epub的文件格式:

    • epub解压后,封面是一个XHTML,里面嵌有封面cover.jpeg,每一章节是一个HTML,里面包含着链接着相关的CSS样式,具体epub的文件结构可以参考这个:http://www.lai18.com/content/10588059.html,主要用到的就是:解压后提取每一章节,通过ncx ,opf这些文件,提取出来每一章的HTML以及对应的title,页码等,封装成一个chapterModel,一章对应一个chapterModel

    四、HTML+css的渲染机制:参考一个简答的实现:http://www.jianshu.com/p/c375ac056149,可见webview在加载的时候,是自动将相关联的css样式渲染到HTML文本里的,关键就是css的解析以及和HTML的合并

    五:coretext:

    • 可以参考这个http://www.jianshu.com/p/ad4796df3dd6,简单来讲,在OS/OSX中用于描述富文本的类是NSAttributedString,顾名思义,它比NSString多了Attribute的概念,它可以包含很多属性,粗体,斜体,下划线,颜色,背景色等等,每个属性都有对应的字符区域。在OSX上我们只需解析完毕相应的数据,转为NSAttributedString即可,底层的绘制完全可以交给相应的控件完成。

    七、DTCoreText:

    • github地址:https://github.com/Cocoanetics/DTCoreText,这是一个封装友好的,用原话来讲就是:Methods to allow using HTML code with CoreText,主要功能就是能够将我们输入的HTML文件进行解析,并自动关联相对应的css样式(也帮我们解析好了),我们需要做的就是输入一个HTML文件,他就会给我们输出带有排版样式的NSAttributedString,然后我们直接使用coretext进行画这个NSAttributedString就可以啦!导入库的时候,建议使用cocoapods,并且在buildsettings—>lingking->other link flags,第一个填上$(inherited)
    • 关于DTCoreText的使用,我主要参考这篇博文以及工程,http://blog.smartlogic.io/2013/04/02/ios-app-development-dtattributedtextview-instead-of-uiwebview。简单明了的一个demo。

    六、清楚了上述所列,因此我们的目标就是讲提取到的每一章节的HTML文件,转化成NSAttributedString,并且这个NSAttributedString不是简单的字符串,而是带有排版样式的string,借助于DTCoreText,就可以完成上述功能的实现了。

  • 相关阅读:
    HTML
    初学网页
    刚学了函数,关于有无参数和返回值的四种情况的查找数字的代码
    输入五个学生的成绩,得到成绩表
    验证你的邮箱是不是qq邮箱
    摘自评论。
    LINQ Except “引用类型” 用法
    梦到钢笔
    MVC传参数给js的时候 如果是数值 变量要进行一下转换才能正确识别 例如var aaa = parseInt('@Model.ClickIndex');
    绝对路径相对路径
  • 原文地址:https://www.cnblogs.com/lucky-star-star/p/5777462.html
Copyright © 2020-2023  润新知