2014-09-22 41 views
2

我正在使用UIPageViewController在一系列viewcontrollers中滑動。基於視圖之間的滾動位置,我希望父視圖控制器的背景在滑動時平滑過渡顏色。我希望UIPageViewController有一個與scrollViewDidScroll類似的委託方法,但它似乎沒有。UIPageViewController類似於scrollViewDidScroll的委託方法:(UIScrollview *)scrollview

是否有替代方法或類似的方法來暴露刷卡的位置,因爲它發生/變化?

編輯: 由於滾動型似乎並沒有被暴露,我想出了一個燙髮/臨時解決方案。在頁面之間轉換時,我將父級背景顏色轉換爲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

您的最低部署目標是什麼? iOS 7和更高版本? – Acey 2014-09-22 21:20:49

+0

ios7最低。我們不支持ios6。 – Miro 2014-09-23 02:07:43

+1

不幸的是,當您使用滾動轉換(Apple尚未公開)時,您無權訪問添加到頁面視圖控制器子視圖中的滾動視圖。如果您需要該功能,您必須創建自己的頁面視圖控制器版本。 – rdelmar 2014-09-23 03:00:05

回答

-1

如果你的意思是要他們刷卡兩種視圖控制器之間的過渡來跟蹤用戶的手指,然後設置數據源,並實現方法:viewControllerBeforeControllerviewControllerAfterController。如果這些被實現,UIPageViewController將自動實現一個手勢識別器,它跟蹤用戶的滑動並相應地爲兩個viewController之間的轉換進行動畫處理。

+0

通過這種方法已經存在視圖轉換。我想要實際跟蹤滑動位置,這樣我可以在任何時候在滑動中告訴它有多遠,如果它們來回走動等等。 – Miro 2014-09-23 02:08:33

2

雖然UIPageViewControllerUIScrollView默認情況下不露,它實際上並不難找到,所以你可以做你想做的通過使您的視圖控制器的UIScrollViewDelegate,然後做這樣的事情在viewDidLoad方法或類似:

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

現在您的視圖控制器可以實現scrollViewDidScroll:並能夠跟蹤頁面視圖控制器的過渡。

相關問題