Ios UIPageViewController委托方法类似于scrollViewDidScroll:(UIScrollview*)scrollview
我正在使用UIPageViewController浏览一系列ViewController。我希望父视图控制器的背景在滑动时根据视图之间滚动的位置在颜色之间平滑过渡。我希望UIPageViewController会有一个类似于scrollViewDidScroll和position的委托方法,但它似乎并没有 是否有替代方法或类似方法在刷卡发生/更改时显示刷卡位置 编辑: 因为scrollview似乎没有公开,所以我提出了一个perm/temp解决方案。在页面之间转换时,我会在1秒的动画时间内转换父背景色。这并不直接与刷卡相关联,也不允许半刷卡等。但对于常规的侧对侧刷卡,它可以实现所需的平滑效果,而不是即时的颜色变化Ios UIPageViewController委托方法类似于scrollViewDidScroll:(UIScrollview*)scrollview,ios,uiscrollview,uipageviewcontroller,Ios,Uiscrollview,Uipageviewcontroller,我正在使用UIPageViewController浏览一系列ViewController。我希望父视图控制器的背景在滑动时根据视图之间滚动的位置在颜色之间平滑过渡。我希望UIPageViewController会有一个类似于scrollViewDidScroll和position的委托方法,但它似乎并没有 是否有替代方法或类似方法在刷卡发生/更改时显示刷卡位置 编辑: 因为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
];
如果您的意思是希望两个视图控制器之间的转换在用户滑动时跟踪用户的手指,则设置数据源并实现以下方法:
viewControllerBeforeController
和viewControllerAfterController
。如果实现了这些功能,UIPageViewController将自动实现一个手势识别器,该识别器跟踪用户的滑动,并相应地设置两个ViewController之间的转换动画。虽然默认情况下,UIPageViewController
的UIScrollView
不公开,但实际上并不难找到,因此,您可以通过将视图控制器设置为UIScrollViewDelegate
,然后在viewDidLoad
方法或类似方法中执行以下操作来完成所需操作:
for (UIView *view in pageViewController.view.subviews) {
if ([view isKindOfClass:[UIScrollView class]]) {
((UIScrollView *)view).delegate = self;
break;
}
}
现在,您的视图控制器可以实现
scrollViewDidScroll:
,并能够跟踪页面视图控制器的转换。您的最低部署目标是什么?iOS 7及更高版本?至少iOS 7。我们不支持ios6。不幸的是,当您使用滚动转换时,您无法访问添加到页面视图控制器子视图中的滚动视图(苹果尚未公开)。如果需要该功能,您必须创建自己版本的页面视图控制器。视图转换已通过此方法就位。我想实际跟踪滑动的位置,这样我就可以在滑动的任何点上知道它有多远,如果它们来回移动等等。谢谢!对于那些感到懒惰的人,这里有一个快速的版本:在pageViewController.view.subviews{if let view=view as?UIScrollView{view.delegate=self}中查看