GiGaMaskTime/GIGA/Modules/Mask/Controller/GIGaSharePageViewController.m

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