1 // hy:自定义声明创建子控制器的方法
2 - (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index
3 {
4 if (([self.arrPageTitles count] == 0) || (index >= [self.arrPageTitles count])) {
5 return nil;
6 }
7 // Create a new view controller and pass suitable data.
8 PageContentViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"];
9 pageContentViewController.imgFile = self.arrPageImages[index];
10 pageContentViewController.txtTitle = self.arrPageTitles[index];
11 pageContentViewController.pageIndex = index;
12 return pageContentViewController;
13 }
1 -(void)scrollViewDidScroll:(UIScrollView *)scrollView {
2 NSLog(@"偏移量--%lf",scrollView.contentOffset.x);
3 }
根据在ScollView的代理方法中,不断打印scrollView的偏移量,我们可以查看到,每次最后停止的时候,偏移量都会恢复一个值,这个值就是当前手机屏幕宽度。比如iPhone6的宽度是320px。
UIPageController的子ScrollView始终保持当前有三个手机屏幕的界面的contentView,然后始终最后停止的时候,偏移量更新为一个屏幕的大小,比如在iPhone6中,当前有1 2 3个界面在contentView中,当前显示的是第2个界面,偏移量自然就是320,然后我们向右拖拽界面,从2到1的过程,偏移量从320 --> 0,最后当前显示第1个界面,然而,UIpageController底层会将ScorllView的ContentView的偏移量重新更新为320,这样就能保证当前显示的View始终在scrollView的contentView的中间。