由于项目需要,做一个电子书的效果,找了好多翻页效果,都没有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;
如有任何问题请留言。