UIPageViewController:视图控制器之间淡入淡出动画?

3

你的意思是它们应该同时滑动(滚动)和渐隐吗? - matt
是的!我希望有某种库可以做到这一点。 - blee908
4个回答

11
使用代理方法pageViewController:willTransitionToViewControllers:,在手势开始时调用。你已经知道旧的视图控制器是什么,因为它已经存在。同时,这个方法告诉了你新的视图控制器是什么。因此,你可以访问他们的视图,改变其透明度。
手势可能会被取消,但是pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:会告诉你这一点,所以你可以将现有视图的透明度恢复原样。
如果你不喜欢这种方法,你就需要继承UIPageViewController,或者编写自己的父视图控制器来完成同样的事情。优点在于你可以直接访问滚动视图,并跟踪滚动。如何编写“无限滚动视图”在几年前的WWDC视频中讨论过;我曾经写过一个,但当UIPageViewController采用滚动样式后,我放弃了它。

你认为在使用UIPageViewController时有没有一种方法可以调用scrollViewDidScroll函数? - user4790024

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 的索引(存储在其标签属性中)设置该页面的正确图像。


0
使用自定义的SCPageViewController,并在pageViewController:didNavigateToOffset:委托方法中淡入视图。

-4

这是包含在 Interface Builder 的默认转场样式中的。


这不是真的,唯一包含的选项是滚动和翻页效果。 - CristianMoisei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接