最近执着于对技术的钻研与热爱~~,此处省略N个字。。。哈哈
那么电子书阅读器究竟该怎么实现?如何实现双面显示?如何实现文本文件的分页及高性能的用户体验?
首先我们来看看效果图然后说怎么实现:
![](https://img.haomeiwen.com/i3579763/180da86780355623.png)
![](https://img.haomeiwen.com/i3579763/15d8dfc4aaacb9ab.png)
首先当然+毫无疑问的使用官方提供的UIPageViewController控件,网上也有人通过UIScrollView+手势实现的DEMO,这里不做评论,只说一句:何必脱被子放屁浪费那一张纸。。。首先按照如下代码,手动撸吧,这里就不帖了,为的是你自己写的同时体验一下这种感觉。当然也有参考其他同学的想法和代码,在此谢过。但是对于双面显示的处理,相信全网独此一家。
![](https://img.haomeiwen.com/i3579763/8b8513cd1e8c989e.png)
ViewDidLoad方法中对UIPageViewController进行初始化。注意[pageController setDoubleSided:YES];如果你不用这行代码开启双面显示,那就请你关闭浏览器去玩去,下面的事情与你无关了。因为单页面非双面显示根本不在本文的讨论范围,不要浪费您的时间。self.areaSafeHeight是我在父类控制器中封装的计算当前视图的有效显示高度(没有NAV+TABBAR高度),你自己写。
![](https://img.haomeiwen.com/i3579763/f2d0e23c92f21b7b.png)
然后继续,下面都在干什么?总体做了三件事情。
1、读取文本文件(小说内容)
2、分页计算
3、初始化一个(内容首页)控制器显示小说第一页内容,预先加载了5页,后面的其他页面由其他事件触发,即想法是每当用户翻一页,就解析连续的几页,当然下面代码并没有提供这个功能,读者自己去解决,这里就不提供这个触发机制及处理逻辑。当然你也许会发现UIPageViewController总页数不对,肯定不对,那你就得自己去处理咯,这里就也不提供相应的具体方法。
![](https://img.haomeiwen.com/i3579763/b74b09a3e151e9ae.png)
![](https://img.haomeiwen.com/i3579763/c70e24eb0f0e52bc.png)
![](https://img.haomeiwen.com/i3579763/ec8d27f2d93d686f.png)
![](https://img.haomeiwen.com/i3579763/f52639738a12f059.png)
![](https://img.haomeiwen.com/i3579763/d10bd4ae7f3609ca.png)
![](https://img.haomeiwen.com/i3579763/6809b9f400761747.png)
![](https://img.haomeiwen.com/i3579763/8daa02e2d5c07715.png)
这里就是核心的显示,来控制当前页面是正常显示还是反转镜像显示,即下面与反面。因为如果设置为双面显示,以下三个方法每滑动一次,这两个代理方法就会被调用两次,所以,我们要根据这个计数器的奇偶来处理怎么显示。自己体会和分析哦。
![](https://img.haomeiwen.com/i3579763/c5db03ddfff176d0.png)
![](https://img.haomeiwen.com/i3579763/63691685a003b670.png)
![](https://img.haomeiwen.com/i3579763/1f7ca8f1c0c9a3af.png)
![](https://img.haomeiwen.com/i3579763/86227fa423149ce2.png)
下面我就不废话打字了,太累了。。。。同学们慢慢体会吧。
![](https://img.haomeiwen.com/i3579763/63214c0183bfdd97.png)
![](https://img.haomeiwen.com/i3579763/8f185d6a9031bcd0.png)
![](https://img.haomeiwen.com/i3579763/7346fbe84510b6c0.png)
![](https://img.haomeiwen.com/i3579763/25eeadff50ff61ae.png)
网友评论