一、概述
關于電子書, 主要還是細節的處理, 懵逼, 做到最后直接集成現成的 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.需要配置的環境:
Snip20160916_1.png
四、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)
})
}