【iOS】KDViewPager——类似Android ViewPager的控件

KDViewPager是基于UIPageViewController实现的类似Android ViewPager的控件,用于展示可以滑动的一系列UIViewController,和其他类似控件不同的是,KDViewPager并没有封装其他的类似Tab之类的Control控件,同时支持已任意方式添加到任意View中,所以更加灵活。

先看一下Demo:

preview

从Demo中也可以看出,KDViewPager支持设置是否有Bounce效果,支持方便地滚动到某个Page。

KDViewPager的使用也很简单,这里展示Demo项目里的核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

- (void)viewDidLoad {
[super viewDidLoad];

_pager = [[KDViewPager alloc] initWithController:self inView:_contentView];
_pager.datasource = self;
_pager.delegate = self;
}

#pragma mark - datasource
-(UIViewController *)kdViewPager:(KDViewPager *)viewPager controllerAtIndex:(NSUInteger)index cachedController:(UIViewController *)cachedController {
if (cachedController == nil) {
cachedController = [[ContentViewController alloc] initWithIndex:index];
}
return cachedController;
}

-(NSUInteger)numberOfPages:(KDViewPager *)viewPager {
return 5;
}

#pragma mark - delegate
-(void)kdViewpager:(KDViewPager *)viewPager didSelectPage:(NSUInteger)index direction:(UIPageViewControllerNavigationDirection)direction {

}
-(void)kdViewpager:(KDViewPager *)viewPager willSelectPage:(NSUInteger)index direction:(UIPageViewControllerNavigationDirection)direction {

}

是不是很简单?

其实原理也没什么好说的,就是对UIPageViewController的封装,感兴趣的话去看看源码吧~

源码地址:Github