UIPageViewController 在平移/滑动时设置附加操作

Posted

技术标签:

【中文标题】UIPageViewController 在平移/滑动时设置附加操作【英文标题】:UIPageViewController set additional actions on pan/swipe 【发布时间】:2014-01-14 22:05:18 【问题描述】:

我使用 UIPageViewController 在三个视图之间平移。 当我从第二个视图平移到第三个视图(反之亦然)时,我想模糊第三个视图的背景。 因此,我在第二个视图中附加了一个额外的 UIPanGestureRecognizer。 这个 UIPanGestureRecognizer 为图像视图的 alpha 属性设置动画,该属性包含背景图像的模糊表示,从 0.0 到 1.0,只要第二个视图的右边框通过屏幕中间。当我从第三个视图平移到第二个视图时,第三个视图的附加 UIPanGestureRecognizer 会做相反的事情。

不幸的是,这种行为是静态的。 UIPageViewController 的平移是交互式的。 当我想从第二个视图平移到第三个视图并且第二个视图的右边框通过屏幕中间时,在我平移时,毛刺图像视图变得可见。但是,当我平移时,我可以改变主意并在平移回原始位置时取消转换。尽管第二个(而不是第三个)视图在屏幕上,但模糊的视图仍然可见。

当我在太短的距离内快速平移时会出现类似的问题。 UIPageViewController 将移动到第三个视图,但模糊的图像视图保持不可见。

有什么方法可以使视图的过渡与毛刺图像视图的可见性/不可见性同步?

UIPageViewController 委托协议有两个有趣的方法: pageViewController:willTransitionToViewControllers: pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:

很遗憾,这两种方法都不适用于我的目的。

ios 7 SDK 的 UIViewControllerAnimatedTransitioning 功能似乎也不适用于 UIPageViewController。

有人有想法吗?

【问题讨论】:

【参考方案1】:

听起来像 iOS7 功能UIViewControllerInteractiveTransitioning(其中还包含相关的非交互式动画过渡)确实是您所需要的。您可以考虑将您的 UIPageViewController 替换为可以使用此方法的其他机制,例如 UINavigationController。

【讨论】:

以上是关于UIPageViewController 在平移/滑动时设置附加操作的主要内容,如果未能解决你的问题,请参考以下文章

如何判断UIPageViewController页面是否转动是由于滑动/平移或点击

如何使 UIPageViewController 过渡行为类似于 IOS7 中的交互式弹出过渡样式

观察 UIPageViewController 的转换状态

关于scrollview的无限滚动效果实现

UIPageControl(页面控件)不显示在 UIPageViewController

ViewDidLoad 不断在 UIPageViewController 上被调用