iOS-阅读器系列

iOS开发 电子书阅读器 双面显示

2019-11-30  本文已影响0人  zhaocarbon

最近执着于对技术的钻研与热爱~~,此处省略N个字。。。哈哈

那么电子书阅读器究竟该怎么实现?如何实现双面显示?如何实现文本文件的分页及高性能的用户体验?

首先我们来看看效果图然后说怎么实现:

首先当然+毫无疑问的使用官方提供的UIPageViewController控件,网上也有人通过UIScrollView+手势实现的DEMO,这里不做评论,只说一句:何必脱被子放屁浪费那一张纸。。。首先按照如下代码,手动撸吧,这里就不帖了,为的是你自己写的同时体验一下这种感觉。当然也有参考其他同学的想法和代码,在此谢过。但是对于双面显示的处理,相信全网独此一家。

ViewDidLoad方法中对UIPageViewController进行初始化。注意[pageController setDoubleSided:YES];如果你不用这行代码开启双面显示,那就请你关闭浏览器去玩去,下面的事情与你无关了。因为单页面非双面显示根本不在本文的讨论范围,不要浪费您的时间。self.areaSafeHeight是我在父类控制器中封装的计算当前视图的有效显示高度(没有NAV+TABBAR高度),你自己写。

然后继续,下面都在干什么?总体做了三件事情。

1、读取文本文件(小说内容)

2、分页计算

3、初始化一个(内容首页)控制器显示小说第一页内容,预先加载了5页,后面的其他页面由其他事件触发,即想法是每当用户翻一页,就解析连续的几页,当然下面代码并没有提供这个功能,读者自己去解决,这里就不提供这个触发机制及处理逻辑。当然你也许会发现UIPageViewController总页数不对,肯定不对,那你就得自己去处理咯,这里就也不提供相应的具体方法。

这里就是核心的显示,来控制当前页面是正常显示还是反转镜像显示,即下面与反面。因为如果设置为双面显示,以下三个方法每滑动一次,这两个代理方法就会被调用两次,所以,我们要根据这个计数器的奇偶来处理怎么显示。自己体会和分析哦。

下面我就不废话打字了,太累了。。。。同学们慢慢体会吧。

上一篇下一篇

猜你喜欢

热点阅读