Demo效果展示:

详解:
一、环境的配置,搭建项目
-
解析:对于这个项目,首先我们要创建一个显示主界面的控制器,对其嵌入一个导航Nav,在将Nav作为窗口的根视图控制器。
1.初始化
项目初始化
2.设置背景颜色以及自适应
设置背景颜色以及自适应
二、设置分段界面
-
解析:其实就是自定义一个分段显示的View。在自定义这个分段view是我们首先,要考虑我们这个分段View要声明所需的属性(上面button文字标题是什莫,颜色是什莫,字号多大),并创建一个数组进行上面button的容量器。然后,初始化进行。
1.1自定义与初始化
自定义与初始化
1.2添加到显示界面
添加到显示界面
- 解析:
- 创建一个方法,目的是,控制器传入一个数组,并根据数组中的个数向自定义View上添加频道的数目,又知道频道的数量,有根据频道的标题数量而定,所以控制器传入的数组是包含控制器标题的数组。
-
方法内:循环遍历,添加频道->设置下划线->创建一个数组盛放所有频道->默认选中第一个频道
2.1声明方法
声明方法,目的如图所示
2.2.1更正
更正
2.2.2增加频道-方法的实现
增加频道-方法的实现
2.2.3点击频道-方法的实现
声明、关联
选中状态,以及点击频道下划线的走向
选中状态,以及点击频道下划线的走向
2.2.3将主界面的控制器中标题数组传入自定义View中,设置频道标题,并运行检测效果
传入数组
当前效果展示:
当前效果展示
二、实现界面跳转
-
解析:点击频道,外界,要想跳转界面,就得把自定义View中点击按钮的tag传出去。运用代理方法,进行传值。
1.1设置代理
设置代理
1.2遵守协议
遵守协议
1.3判断响应
判断响应
当点击频道时,要考虑到,主界面偏移量将发生变化
2.1声明一个主界面,并实现代理方法
宏设置,代理的遵守
声明一个主界面
3.1代理方法的实现
点击频道时,主界面的偏移量会发生变化
主界面的偏移量会发生变化
主界面的设置
三、界面滑动联动标题跳转界面
1.遵守协议,设置代理


2.代理实现




三、添加跳转随机颜色以及界面

最终展示效果:

知识点小结:
- 1.automaticallyAdjustsScrollViewInsets根据按所在界面的status bar,navigationbar,与tabbar的高度,自动调整scrollview的 inset,设置为no,
- 2.scrollViewDidEndDecelerating表示减速结束了。然而减速结束和滑动结束并不等价。因为有些滑动并不需要减速也可以结束。比如我两只手轮流向左滑动,直到滑动到scrollview的右侧尽头为止,这个过程的滑动是被迫终止而不是自然减速停止,所以scrollViewDidEndDecelerating方法是不会被执行的
上边有的会出现错误,下面也有更正,请谅解。