iOSswift

iOS 对于pageController 的做法

2017-01-16  本文已影响422人  崠崠

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

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

Interface Builder 

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

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

1

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

上下约束

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

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

 containView的宽度设置

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

整体界面

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

4相应计算

效果图

效果图

代码封装

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

DDPageViewController

具体的情况,头文件

头文件

主要的代码块:

代码

使用:

使用

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

效果图:

效果图

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

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

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

nav bar存在情况

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

上一篇下一篇

猜你喜欢

热点阅读