我正在使用 UIPageViewController 来滑动一系列视图控制器。我希望父视图控制器的背景在滑动时根据视图之间滚动的位置在颜色之间平滑过渡。我希望 UIPageViewController 会有一个类似于带有位置的 scrollViewDidScroll 的委托方法,但似乎没有。
是否有替代方法或类似的方法来公开滑动发生/变化的位置?
EDIT:
由于滚动视图似乎没有暴露,我想出了一个永久/临时解决方案。在页面之间转换时,我会通过 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
];
虽然UIScrollView
of the UIPageViewController
默认情况下不公开,实际上并不难找到,因此您可以通过将视图控制器设置为UIScrollViewDelegate
然后在中做类似的事情viewDidLoad
方法或类似方法:
for (UIView *view in pageViewController.view.subviews) {
if ([view isKindOfClass:[UIScrollView class]]) {
((UIScrollView *)view).delegate = self;
break;
}
}
现在你的视图控制器可以实现scrollViewDidScroll:
并能够跟踪页面视图控制器的转换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)