我使用UIPageViewController浏览一系列viewcontrollers。我希望父视图控件的背景可以在滑动时根据视图之间滚动的位置在颜色之间平滑过渡。我希望UIPageViewController有一个类似于scrollViewDidScroll的委托方法与位置,但它似乎没有。
是否有替代方法或类似方法在滑动发生/更改时显示滑动位置?
修改: 由于scrollview似乎没有公开,我已经提出了perm / temp解决方案。当在页面之间转换时,我将父背景颜色转换为1秒的动画。这不直接与滑动相关,或允许半滑动等。但是对于常规的侧向滑动,它可以实现所需的平滑效果,而不是即时换色。
// code that occurs when a pageControl swipe occurs.
UIColor *destinationColor = [UIColor redColor]; // the desired end color
[UIView animateWithDuration:1.0
delay:0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.pageViewController.view.backgroundColor = destinationColor;
}
completion:nil
];
答案 0 :(得分:2)
虽然UIScrollView
的{{1}}默认情况下并未公开,但实际上并不难找到,因此您可以通过制作视图控制器来执行您想要的操作一个UIPageViewController
然后在UIScrollViewDelegate
方法中执行类似的操作:
viewDidLoad
现在,您的视图控制器可以实现for (UIView *view in pageViewController.view.subviews) {
if ([view isKindOfClass:[UIScrollView class]]) {
((UIScrollView *)view).delegate = self;
break;
}
}
并能够跟踪页面视图控制器的转换。
答案 1 :(得分:-1)
如果您的意思是希望两个视图控制器之间的转换在用户滑动时跟踪用户的手指,则设置数据源并实施方法:viewControllerBeforeController
和viewControllerAfterController
。如果实现了这些,UIPageViewController将自动实现一个手势识别器,该手势识别器跟踪用户的滑动并相应地动画两个viewControllers之间的过渡。