iOS 对于pageController 的做法

     项目经常要用到类似于安卓的PagerAdapter的效果,就是采用UIScrollView 来实现左右滑动的。

     之前学习的Interface Builder的做法比较麻烦,且复用性不高,每次需要的话要重新拉约束(关键这个一不小心就会出错),下面介绍一下从Interface Builder和用代码封装的两种做法

Interface Builder 

主要的想法是,利用scrollview的滑动,在其上加入对应的containView,scrollview的contentSize的大小就是containView的大小,这样子说有点抽象,还是一步一步来介绍。

1、建立viewController ,拉入ScrollView、Segment的控件(例子为3个page)

iOS 对于pageController 的做法_第1张图片
1

2、在scrollView中加入containView 控件(3个),主要的布局思想是containView1、containView2、containView3(从左到右,一下简称view1,view2,view3),3个的top space 约束和bottom space 约束都与scroll view 为0


iOS 对于pageController 的做法_第2张图片
上下约束

同时三containview的height等于scrollView的高度,view1的leading space与scrollView 为0,trailing space 与view2 为0,以此类推,初步的一个3个page的scrollView规格成了。

3、为了确定scrollView的contentSize的宽度(显示左右滑动的长度),需要子页面来提供宽度撑起页面,这时containview的width设置为View(scrollView的Super View)的宽度


iOS 对于pageController 的做法_第3张图片
 containView的宽度设置

这样,一个宽为3个page 的scrollView就做好了


iOS 对于pageController 的做法_第4张图片
整体界面

4、在对应的.m文件实现Segment 的点击事件和scrollView delegate的滑动计算


iOS 对于pageController 的做法_第5张图片
4相应计算

效果图


效果图


代码封装

这个是在前辈的基础上完成的,主要的思路其实与Interface Builder的思路是一样的,但是用代码封装完成的话,这样更有利之后的使用,适应的范围更广,使用更简便。


DDPageViewController

具体的情况,头文件


iOS 对于pageController 的做法_第6张图片
头文件

主要的代码块:


iOS 对于pageController 的做法_第7张图片
代码

使用:


iOS 对于pageController 的做法_第8张图片
使用

只要将对应头文件的参数设置好,将pageController的view和controller加入到要显示的VC中,就可以使用了。

效果图:


iOS 对于pageController 的做法_第9张图片
效果图

至于.m文件中具体实现的步骤就不一一阐述了,后续会将Demo上传的。

demo:github.com/hdongdong/DDPageController/tree/master

后记:对了,在用pageController的时候在所显示的页面中是navigation controller的页面时,就是nav bar存在时,此时苹果的会自动将view的显示内容往下移64pt, 可能会在造成header view的显示出现问题,可以这样做

nav bar存在情况

具体的原因和相应解决方法请参考关于NavigationBar存在时,UIScrollView内容发生偏移的问题

你可能感兴趣的:(iOS 对于pageController 的做法)