Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIPageViewController:视图控制器之间的淡入/淡出动画?_Ios_Objective C_Uiviewcontroller_Uipageviewcontroller_Uianimation - Fatal编程技术网

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

Ios UIPageViewController:视图控制器之间的淡入/淡出动画?,ios,objective-c,uiviewcontroller,uipageviewcontroller,uianimation,Ios,Objective C,Uiviewcontroller,Uipageviewcontroller,Uianimation,我遵循了@上的教程来实现UIPageViewController。我需要在视图控制器之间进行转换,以便在用户在它们之间滚动时淡入/淡出 执行此操作的应用程序示例在这里使用代理pageViewController:willtransitiononviewcontrollers:。这被称为手势开始。您知道旧的视图控制器是什么,因为它已经存在。您知道新的视图控制器是什么,因为此消息告诉您。因此,您可以访问他们的视图。因此,您可以更改其视图的alpha 该手势可能会被取消,但随后pageViewCont

我遵循了@上的教程来实现UIPageViewController。我需要在视图控制器之间进行转换,以便在用户在它们之间滚动时淡入/淡出


执行此操作的应用程序示例在这里

使用代理
pageViewController:willtransitiononviewcontrollers:
。这被称为手势开始。您知道旧的视图控制器是什么,因为它已经存在。您知道新的视图控制器是什么,因为此消息告诉您。因此,您可以访问他们的视图。因此,您可以更改其视图的alpha

该手势可能会被取消,但随后
pageViewController:didffinishanimating:previousViewControllers:transitionCompleted:
会告诉您这一点,以便您可以再次修复现有视图的alpha


如果您不喜欢这种方法,您将不得不将UIPageViewController子类化,或者编写自己的父视图控制器来执行类似的操作。这样做的好处是,您可以直接访问滚动视图,并且可以自己跟踪滚动。几年前的一段WWDC视频中讨论了如何编写“无限滚动视图”;我已经写了一个,但当UIPageViewController采用滚动样式时,我放弃了它。

根据@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]] 
    } 
}
-(void)pageViewController:(UIPageViewController*)pageViewController将转换为ViewController:(NSArray)
*)悬垂视图控制器{
_nextVC=[pendingViewControllers对象索引:0];
}
-(void)pageViewController:(UIPageViewController*)pageViewController未完成初始化:(BOOL)已完成PreviousViewController:(非空NSArray*)PreviousViewController转换已完成:(BOOL)已完成{
如果(已完成)
{
[\u welcomeBackground setImage:[NSString stringWithFormat:@“welcome\u intro\u image\uUd”,\u nextVC.view.tag]]
} 
}

我们检查是否已完成,以确保用户实际进入下一页,然后根据存储在其tag属性中的TVC索引设置该页面的正确图像。

这包括在interface builder的默认转换样式中

使用自定义SCPageViewController并在pageViewController:didNavigateToOffset:delegate方法中淡入视图

您的意思是它们应该滑动(滚动)吗然后消失?是的!我希望有一种库可以用于此。你认为有没有一种方法可以在使用UIPageViewController时调用scrollViewDidScroll?这不是真的,包括的唯一选项是Scroll和Page Curl