在UIPageView背后移动背景

时间:2014-04-27 20:27:01

标签: ios iphone background uipageviewcontroller

我正试图以全景方式在UIPageView后面实现移动的背景图片。 (类似于android主屏幕的概念)

PageView的过渡风格为“Scroll”。

我直到现在才发现使用委托“didFinishAnimation”方法:

(void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed

使用此方法,背景会在达到新页面后移动。我希望它能同时发生。

有没有办法将此imageview的位置与页面视图的当前拖动位置同步?

1 个答案:

答案 0 :(得分:3)

虽然它有点hacky但是在iOS 7.1中,页面视图控制器的滚动视图默认没有委托,你可以在不访问任何私有API的情况下成为它的委托。子类UIPageViewController,并在您的子类调用

- (void)viewDidLoad {
    [super viewDidLoad];
    // other code
    NSInteger scrollViewIdx = [self.view.subviews indexOfObjectPassingTest:^BOOL(UIView *subview, __unused NSUInteger idx, __unused BOOL *stop) {
        return [subview isKindOfClass:UIScrollView.class];
    }];
    NSAssert(scrollViewIdx != NSNotFound, @"Failed to find page view controller scroll view");
    UIScrollView *scrollView = self.view.subviews[scrollViewIdx];
    scrollView.delegate = self; // or whatever
}

然后你可以实现

- (void)scrollViewDidScroll:(UIScrollView *)scrollView