使用UIPageViewController作为容器,可以盛装多个ViewController,高效实现可以左右/上下滑动切换不同流。
代码片段:
遵守
UIPageViewControllerDataSource,
UIPageViewControllerDelegate,
协议创建pageViewController对象:
//创建底部的pageViewController
- (void)createPageViewControlelr{
//创建pageView视图,作为整个滑动视图控制器
//创建配置
NSDictionary * dic = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:UIPageViewControllerSpineLocationMin] forKey:UIPageViewControllerOptionSpineLocationKey];
//创建pageController对象;并且只允许左右滑动
self.downPageViewController = [[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:dic];
self.downPageViewController.automaticallyAdjustsScrollViewInsets = NO;
//设置背景颜色
self.downPageViewController.view.backgroundColor = [UIColor whiteColor];
//设置pageViewController的view的frame;
[self.downPageViewController.view setFrame:CGRectMake(0, 0,mScreenWidth,mScreenHeight)];
//设置代理
self.downPageViewController.delegate = self;
self.downPageViewController.dataSource = self;
//持有pageViewController,并且展示view
//[self.view addSubview:self.downPageViewController.view];
//[self addChildViewController:self.downPageViewController];
[self presentViewController:self.downPageViewController animation:NO complate:NULL];
self.downPageViewController.view.backgroundColor = [UIColor colorWithRGBHexString:@"#EFEFF4"];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController{
NSInteger index = [self indexOfCardViewController:(UIViewController *)viewController];
//准备前面一页
return [self cardViewControllerWithIndex:index - 1];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController{
NSInteger index = [self indexOfCardViewController:(UIViewController *)viewController];
//准备后面一页
return [self cardViewControllerWithIndex:index + 1];
}
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed{
NSInteger index = [self indexOfCardViewController:pageViewController.viewControllers[0]];
//滑动切换了流
}
//pageViewController代理辅助方法
- (UIViewController *)cardViewControllerWithIndex:(NSInteger)index{
//如果越界,不要取
if (index >= 0 && index < self.cardContentViewControllers.count) {
return self.cardContentViewControllers[index];
}
return nil;
}
//获取对应的位置
- (NSInteger)indexOfCardViewController:(UIViewController *)cardViewController{
return [self.cardContentViewControllers indexOfObject:cardViewController];
}