观察UIPageViewController的过渡状态

时间:2015-06-16 14:15:32

标签: ios uikit uipageviewcontroller

我想根据“在屏幕上”显示视图的视觉状态进行调整。这些视图由UIPageViewController管理,使用库存.Scroll转换样式。

我想要的行为是,当屏幕上为100%时标题为100%不透明度,屏幕上为0%时为0%不透明度,根据平移导航手势/动画在两者之间进行转换

我希望我可以插入x坐标或百分比动画完成,但我没有看到任何地方的属性。我理解页面视图控制器在后台使用滚动视图,但我有点担心进入私有API,我没有看到访问它的公共方法。

有没有办法挂钩现有的交互式转换,以便我可以向基于完成百分比扩展的子视图控制器添加一些额外的行为?

更新

  • 尝试实现UIScrollViewDelegate的scrollViewDidScroll。没运气。我认为页面视图控制器会调用此委托上的方法。
  • 在子视图控制器中使用viewWillDisappear / viewDidAppear尝试。这是有效的,但动画没有响应,因为它们在用户行为的开始/结束时被称为单个事件。

1 个答案:

答案 0 :(得分:0)

您已经更新了有关UIScrollViewDelegate的问题但是,对于模拟问题,我使用UIScrollViewDelegate,如下所示:

for(UIView *aView in self.pageViewController.view.subviews){
    if([aView isKindOfClass:[UIScrollView class]]){
        UIScrollView* sv = (UIScrollView*)aView;
        sv.delegate = self;
    }
}

在我的例子中,UIPageViewController位于容器视图控制器中。这就是我在类中添加委托(PagerDelegate)以在滚动视图滚动时调用ContainerViewController的原因:

#pragma mark - UIScrollViewDelegate

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    [self.pagerDelegate viewDidScroll:scrollView];
}

在ContainerViewController:

#pragma mark - PagerDelegate

- (void)viewDidScroll:(UIScrollView*)scrollView {
    // calculate the transition percentage and do anything you need...
}

希望我理解正确,它可以帮助别人。 (可能你已经解决了这个问题,因为问到了Jun 16' 15)