154 lines
4.8 KiB
Objective-C
154 lines
4.8 KiB
Objective-C
//
|
|
// GIGaSharePageViewController.m
|
|
// GIGA
|
|
//
|
|
// Created by lianxiang on 2018/10/12.
|
|
// Copyright © 2018年 com.giga.ios. All rights reserved.
|
|
//
|
|
|
|
#import "GIGaSharePageViewController.h"
|
|
|
|
@interface GIGaSharePageViewController ()<UIPageViewControllerDataSource,UIPageViewControllerDelegate,UIScrollViewDelegate>
|
|
|
|
{
|
|
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<UIViewController *> *)pendingViewControllers NS_AVAILABLE_IOS(6_0) {
|
|
NSLog(@"开始翻页");
|
|
}
|
|
// 翻页完成调用
|
|
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)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
|