Nis*_*shu 8 ios uipageviewcontroller
我正在尝试UIPageViewController在进行翻转动画时改变阴影颜色.但它总是只显示白色.如何将翻转背景颜色白色的颜色更改为其他颜色(黑色或sephia).iBook也在做同样的事情.
我提到下面的图像有白色bg,颜色我会改变.
截图:

我一直试图做同样的事情一段时间,我终于明白了.事实证明,您无法将背景颜色设置为其他颜色,但您可以提供UIPageViewController将添加到后面的另一个视图.这就是秘密.
来自Apple的文档:
Spine location Double sided What to pass
UIPageViewControllerSpineLocationMid YES Left and Right Page.
SpineLocationMin or SpineLocationMax YES Front and Back of the page.
SpineLocationMin or SpineLocationMax NO Front page only.
Run Code Online (Sandbox Code Playgroud)
因此,基本上,您需要将double side属性设置为yes并在两个Data Source方法上提供两个viewControllers:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController;
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController;
Run Code Online (Sandbox Code Playgroud)
对于您添加的每个新页面,将为每个方法调用两次.因此,您需要提供通常返回的viewController以及在执行页面转动动画时将添加到后面的新viewController.
这取决于你的"BackViewController"将具有的功能.您可以简单地使用黑色视图,或者如果需要,您可以截取首页的屏幕截图,并从中获取镜像图像.
一旦你了解它是如何工作的,这并不难.我在这里看到的唯一问题是当你添加黑色视图或任何黑色背景时,转动页面时的阴影变为白色.我不知道为什么,但我已经在很多不同的应用程序上看到过这种情况,所以我猜Apple这是正常行为.但它看起来很奇怪.
编辑:
我添加了示例代码,因此更容易理解. https://github.com/mattabras/DoubleSidedPageViewController
阿巴拉
小智 0
- (void) renderPageAtIndex:(NSUInteger)index inContext:(CGContextRef)ctx {
UIImage *image = [images objectAtIndex:index];
CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);
CGAffineTransform transform = aspectFit(imageRect,
CGContextGetClipBoundingBox(ctx));
CGContextConcatCTM(ctx, transform);
CGContextDrawImage(ctx, imageRect, [image CGImage]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2964 次 |
| 最近记录: |