一、概述
关于电子书, 主要还是细节的处理, 懵逼, 做到最后直接集成现成的 LSYReader
库
主要支持的格式:
- txt, epub 格式
实现方式:
- CoreText 以及部分 HTML 与 原生混合
LSYReader地址
其他基于 LSYReader
开发
因为我使用的是swift编程, 所以需要配置桥接文件, 导入需要用到的OC头文件, 如有任何问题, 可以联系我
二、Reader的集成步骤:
- 1.将Reader目录下的所有文件都添加到工程中
- 2.由于解压epub文件, 需要用到开源的.c文件, 用于解压缩. 所有使用时如果项目中有.pch文件, 参考本项目中.pch文件写法(配置.pch文件)
- 3.需要导入libz.tbd库
三、Reader的集成过程中遇到的坑:
- 1.如果导入libz.tbd库, 需要同时导入两个相同的依赖库 :
libxml2.tbd库 和 libresolv.tbd库
- 2.需要配置的环境:
四、epub 加载下载网络文件问题
为什么使用LSYReader进行读取过程中遇到的读取不到文件。
因为使用网络下载过程中, 我们的问题
epub
或者txt
文件比较大,就必需考虑到文件下载到本地之后,epub
文件生成的时间了。下载 -> 生成 -> 加载, 一个小细节的处理。
附上代码:
let pageView = LSYReadPageViewController()
pageView.resourceURL = url
dispatch_async(dispatch_get_global_queue(0, 0)) {
var timeout :NSTimeInterval = 0;
while(!NSFileManager.defaultManager().fileExistsAtPath(url!.absoluteString)){
sleep(1);
timeout+=1;
if (timeout > 3){
break;
}
}
if (!NSFileManager.defaultManager().fileExistsAtPath(url!.absoluteString)){
print("文件不存在");
return;
}
pageView.model = LSYReadModel.getLocalModelWithURL(url) as? LSYReadModel
dispatch_async(dispatch_get_main_queue(), {
CHProgressHUD.dismiss()
self.presentViewController(pageView, animated: true, completion: nil)
})
}