7.网易新闻
1.项目思路:1.搭建界面,处理界面细节,处理业务逻辑
0. 注意点
1.创建6个控制器设置标题,创建标题scrollerView通过btn的标题属性拿到控制所设置的标题来添加子控件
2.创建内容ScrollerView要考虑导航控制器是否存在的情况,
3.通过点击标题的btn来监听点击事件,来添加控制器所对应的View到ScrollerView中
4.在添加所有btn按钮中添加标题滚动区域与内容滚动区域
界面搭建
1.1设置标题滚动区域:注意点:要判断导航控制器是否隐藏来设置scrollorV标题的y值,通过按钮的title属性.
1.2设置内容区域:注意点:设置y值时为CGRMY值中的标题的最大y值
1.3设置控制器的题目并添加到控制器中
2. 设置标题
2.0容易遗忘:拿到控制器,就可以拿到控制器的view,根据拿到的顺序就可以按顺序添加view,一个功能一个方法
2.1设置按钮的:题目通过创建控制器vc=childr[i],在vc.title拿到,设置字体颜色,设置尺寸设置滚动区域contentSize
2.2设置按钮的状态:点击时实现titleClick:方法,通过属性在抽取选中方法select方法选中为红色,并且添加子控制器的view上去
2.3注意点:设置内容滚动区域时要根据偏移量来设置.
3. 设置内容滚动区域
3.1创建可变数组通过懒加载记录所有的可选中的按钮,
3.2通过UIScrool代理设置滚动停止时所添加的view,通过数组属性获取所对应的下标在子添加子控件中记录数组,通过titleClick方法或者选中方法获得所选中的按钮,选中方法的话就要再添加view.
4. 设置标题选中按钮居中
4.1可以通过设置标题整个ScrollView的setcontenoff属性来改变偏移量
4.2重写偏移量:通过按钮中心点的位置减去屏幕一半的宽度去设置偏移量
4.3设置最小偏移量大于零,小于最大偏移量 .注意点:self.titleScrollView.bounds.size.width与self.titleScrollView.contenSize.width是两回事.
5. 设置选中按钮字体变大,以前的角标还原
5.1根据偏移量来监听左右按钮的角标,并随着偏移量变大,或恢复
5.2角标不能超过总按钮个数,那到右边的角标
5.3根据左右按钮的transform,来改变放大缩小
5.4把以前的按钮恢复原来的大小
6. 设置字体颜色(越靠近右边越红)
6.1根据左边leftScale从1~0,右边从0~1,[UIColor colorWithred:()g:()b:()]来设置颜色的渐变
7. 封装
7.1封装的好处:提高复用性
7.2封装的注意点:1.要让人用的舒服2.扩展性强
7.3加载所有子标题延迟到viewWillAppear中调用,因为要等封装的子控制器调用完viewDidLoad时在加载子标题
8.底层原理
8.1bounds,frame深入研究,一般没有修改bounds时默认(x,y)都为0
8.1.1frame:可视范围,bounds:描述 可视范围在内容范围 区域,改变bounds的y值就是修改内容范围与可视范围的距离.原理如:8.1.2
8.1.2,因为可视范围是不会移动的添加bounds的y值,bounds的y值改变,所以内容范围距离bounds的距离改变:bounds相当与内容范围的坐标系(内容范围是不可见的,一般添加子控制器是添加到内容范围上,所以通过子控制器去检验内容范围)
8.2 bounds的本质:修改原点位置(内容范围距离控制器)
8.3UIscrollerView的地底层实现原理:就是添加UIView,在通过手势监听来改变UIView的bounds来使scrollerView滚动