我按照@ http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/上的教程来实现UIPageViewController。当用户在它们之间滚动时,我需要在视图控制器之间进行转换以淡入/淡出。
执行此操作的应用的示例是https://itunes.apple.com/us/app/tapiture/id645402534?mt=8
答案 0 :(得分:9)
使用委托pageViewController:willTransitionToViewControllers:
。这是在手势开始时调用的。你知道旧的视图控制器是什么,因为它已经存在。您知道新视图控制器是什么,因为此消息告诉您。因此,您可以访问他们的观点。因此,您可以更改其视图的alpha。
手势可能会被取消,但是pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:
会告诉您这一点,因此您可以重新修复现有视图的Alpha。
如果您不喜欢这种方法,那么您将不得不继承UIPageViewController的子类,或编写您自己的父视图控制器来执行相同的操作。优点是您可以直接访问滚动视图,并可以自己跟踪滚动。在几年前的WWDC视频中讨论了写“无限卷轴视图”;我写了一个,但是当UIPageViewController采用滚动样式时我放弃了它。
答案 1 :(得分:0)
使用@matt的建议,以及我最终如何实现它:
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *>
*)pendingViewControllers {
_nextVC = [pendingViewControllers objectAtIndex:0];
}
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(nonnull NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed {
if (completed)
{
[_welcomeBackground setImage:[NSString stringWithFormat:@"welcome_intro_image_%d", _nextVC.view.tag]]
}
}
我们检查已完成以确保用户实际转到下一页,然后根据存储在其标签属性中的_nextVC索引为该页面设置正确的图像。
答案 2 :(得分:0)
使用自定义SCPageViewController并淡化pageViewController中的视图:didNavigateToOffset:delegate方法
答案 3 :(得分:-1)
这包含在界面构建器
中的默认过渡样式中