iOS基于CoreText实现的电子书阅读器

之前写小说类相关的应用,需要电子书阅读器,在网上找了很久,觉得还是https://github.com/GGGHub/Reader 同学的最好用,所以就拿这个用了。
不过后来发现里面的书签,笔记的定位功能,以及字体变化等功能有点问题,造成阅读者的不愉快,所以特意Fork了一个版本做了相应的修改,大家如果有类似的问题,可以试试我修改后的版本,在这里
https://github.com/Inspirelife96/Reader

如果大家有更好的阅读器,请推荐给我,万份感谢:)

##Reader

基于Core Text实现的iOS客户端的电子书阅读器

支持ePub与text格式


###2016.10.02 更新 (我做的修改)
针对text小说的bug fix。

  1. 当字体变化时,小说有时候不会自动调整界面。
  2. 当字体变化时,还有小说的书签,笔记定位不准确,甚至程序崩溃。3.

大概思路:

  1. 当字体变化时,所有小说的章节都会基于新的字体重新调整,分页等。
  2. 记录笔记/书签文字开始位置的在整个章节中的下标位置,笔记/书签定位时,基于当前的字体分页,看当前的下标位置是否坐落在哪一页中,然后跳转到那一页。

###2016.06.16 更新 (以下都是LiSiYuan写的,非常好的库,我自认为没有他的水平,大家可以好好学习)
添加对ePub格式的支持


部分功能实现效果

关于Reader

  1. 可以自动提取章节并生成目录
  2. 选取一段文字可进行复制,做笔记等功能
  3. 保存阅读进度,即使退出应用也可以继续之前的阅读
  4. 更改字体大小,进度跳转,主题更换等功能
  5. 支持txtePub格式的电子书文件

##安装与使用

###安装

  1. Reader目录下的所有文件都添加到工程中
  2. 由于解压ePub文件,需要用到开源的.c文件用于解压缩。所以使用时如果项目中有.pch文件参考本项目中.pch文件写法
    1
    2
    3
    #ifdef __OBJC__
    //在.pch中这里写引用的.h文件与宏
    #endif

3.需要导入libz.tbd

###使用
text文件

1
2
3
4
5
LSYReadPageViewController *pageView = [[LSYReadPageViewController alloc] init];
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"mdjyml"withExtension:@"txt"];
pageView.resourceURL = fileURL; //文件位置
pageView.model = [LSYReadModel getLocalModelWithURL:fileURL]; //阅读模型
[self presentViewController:pageView animated:YES completion:nil];

ePub文件

1
2
3
4
5
LSYReadPageViewController *pageView = [[LSYReadPageViewController alloc] init];
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"细说明朝"withExtension:@"epub"];
pageView.resourceURL = fileURL; //文件位置
pageView.model = [LSYReadModel getLocalModelWithURL:fileURL]; //阅读模型
[self presentViewController:pageView animated:YES completion:nil];

###提示
之前安装过的下载最新版,应把之前安装的卸载后再安装

###说明
对于有图片和定制样式的epub文件只显示纯文本信息,因为对epub每个章节的html文件直接转成字符串来处理,css样式与epub自带的本地图片没有做处理。