// // GIGaSharePageViewController.m // GIGA // // Created by lianxiang on 2018/10/12. // Copyright © 2018年 com.giga.ios. All rights reserved. // #import "GIGaSharePageViewController.h" @interface GIGaSharePageViewController () { BOOL _done; //是否翻页完成 NSInteger _currentPage;//当前控制器对应下标 } @property(nonatomic,strong) UIPageViewController *pageVC; //@property(nonatomic,strong) NSArray *titles; @property(nonatomic,strong) NSArray *viewControllers; @property(nonatomic,strong) UIPageControl *pageControl; @end @implementation GIGaSharePageViewController - (UIPageControl *)pageControl{ if (!_pageControl) { _pageControl = [[UIPageControl alloc] init]; _pageControl.frame = CGRectMake(KMainW / 2 - 100, KMainH - 20, 200, 20); _pageControl.numberOfPages = self.viewControllers.count; _pageControl.hidesForSinglePage = YES; _pageControl.userInteractionEnabled = NO; } return _pageControl; } - (instancetype)initWithControllers:(NSArray *)viewControllers{ self = [super init]; if (self) { self.viewControllers = viewControllers; } return self; } - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; // Do any additional setup after loading the view. [self addChildViewController:self.pageVC]; [self.view addSubview:self.pageVC.view]; [self.view addSubview:self.pageControl]; } #pragma mark - UIPageViewControllerDataSource // 返回下一个ViewController对象 - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController { NSUInteger index = [self indexOfViewController:viewController]; if (index == NSNotFound) { return nil; } index++; if (index == [self.viewControllers count]) { return nil; } return self.viewControllers[index]; } // 返回上一个ViewController对象 - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController { NSUInteger index = [self indexOfViewController:viewController]; if (index == 0 || index == NSNotFound) { return nil; } index--; return self.viewControllers[index]; } #pragma mark - UIPageViewControllerDelegate // 开始翻页调用 - (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers NS_AVAILABLE_IOS(6_0) { NSLog(@"开始翻页"); } // 翻页完成调用 - (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed { _done = YES; NSInteger index = [self.viewControllers indexOfObject:pageViewController.viewControllers[0]]; _currentPage = index; [_pageControl setCurrentPage:_currentPage]; NSLog(@"翻页完成"); } -(UIInterfaceOrientation)pageViewControllerPreferredInterfaceOrientationForPresentation:(UIPageViewController *)pageViewController NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED { return UIInterfaceOrientationPortrait; } #pragma mark - Tool // 根据数组元素,得到下标值 - (NSUInteger)indexOfViewController:(UIViewController *)viewControlller { return [self.viewControllers indexOfObject:viewControlller]; } #pragma mark - SCrollViewDelegate - (void)scrollViewDidScroll:(UIScrollView *)scrollView { // LOG(@"滚动 = %f", scrollView.contentOffset.x-SCREEN_WIDTH); //CGFloat offsetX = scrollView.contentOffset.x-KMainW; if (!_done) { [_pageControl setCurrentPage:_currentPage]; }else { _done = NO; } } - (UIPageViewController *)pageVC { if (!_pageVC) { _pageVC = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; _pageVC.dataSource = self; _pageVC.delegate = self; _pageVC.view.frame = CGRectMake(0,0,KMainW, KMainH); for (UIView *subview in _pageVC.view.subviews) { [(UIScrollView *)subview setDelegate:self]; //设置是否支持手势滑动 // [(UIScrollView *)subview setScrollEnabled:NO]; } [_pageVC setViewControllers:@[self.viewControllers[0]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil]; } return _pageVC; } @end