UIPageViewController翻页背景改变

来源:互联网 发布:uitableview优化 简书 编辑:程序博客网 时间:2024/05/02 00:11

由于项目需要,做一个电子书的效果,找了好多翻页效果,都没有iBooks做的好,看了一下是用的UIPageViewController做的,但是有个缺陷是翻页背景总是白色,google了很长时间才找到答案,现在我把这些分享一下。

同问题地址:http://stackoverflow.com/questions/12381773/how-to-change-shadow-background-white-to-other-colors

上面是这么说的:我试着改变UIPageViewController翻页动画后的背面颜色,但是总是显示白色。如何改变这个翻页后的的背面颜色。iBook正是这样做的。

原效果图如下:


正确做法:

UIPageViewController 中有 doubleSided 这个属性,置为YES后

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController;- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController;
会让上方的每种方法执行两次,也就是说,当你翻转一下的时候,其实是翻转了两个页面,只不过将第一页显示在翻转时的背面,第二页显示在正面。

因此我们可以这样:

第一次执行时,将当前界面截取图片后放入BackViewController,并且记录下下次执行应该显示的MoreViewController。

第二次执行时,将第一次记录MoreViewController放入。

Abras 给出了他的做法:

https://github.com/mattabras/DoubleSidedPageViewController

这个例子有BUG,正向翻页的时候是没有问题的,但是,后退翻页的时候翻页背景就出错了。

我将这个例子做了修复。贴出下载地址:

http://download.csdn.net/detail/zqx654033799/8396875
该示例代码,有内存释放错误,修复方法:

DemoViewController.h 中的 @property (assign, nonatomic) DemoViewController *currentViewController; 修改为 @property (strong, nonatomic) DemoViewController *currentViewController;

如有任何问题请留言。

0 0