IOS开发-详解网易新闻导航标题栏

项目源码下载

框架实现效果图

对于该功能的需求分析
1.切换标题,被点击的标题和原标题的比例和颜色都会渐变,并且会切换控制器
2.滑动内容视图也会产生点击标题的效果
3.内容视图一开始不加载,有一张占位图占位
4.视频和社会标题被点击后会滑动到屏幕中央

一步步实现导航标题栏

  • 搭建基本框架
    1.该功能由2个ScrollView组成
    2.标题导航栏可以使用三目运算来判断y值(根据是否存在导航控制器)

  • 设置标题
    1.通过遍历所有的子控制器来创建对应标题
    2.设置标题按钮的X值时,使用下标乘以按钮宽度获得
    3.标题也可以通过label来实现,只需要为label添加点按手势,并且将userInteractionEnabled设置为YES

  • 监听标题按钮点击
    1.通过下标来为按钮tag赋值,并且给按钮添加一个监听方法
    2.在监听方法中恢复上一个按钮文字颜色并将被点击按钮颜色变红,记录下当前被点击按钮
    3.通过按钮tag来获取对应子控制器并设置frame
    4.设置内容控制器的偏移量

  • 监听内容视图滚动
    1.为内容视图添加代理,并在scrollViewDidEndDecelerating:方法中实现
    2.通过内容视图偏移量的X除以屏幕宽度来获得角标
    3.通过角标来选中按钮和获取子控制器的View
    4.在获取子控制器View的方法内判断当前视图是否存在superview,如果存在就return,这段代码可以实现最开始切换在该视图时有个占位图片,实现懒加载

  • 按钮居中处理
    1.通过被选中按钮中心点的X值减去屏幕宽度的一半来计算偏移量
    2.通过偏移量来判断如果小于0或者大于最大滚动宽度时不移动,否则会造成每个标题都居中

  • 标题缩放
    1.通过偏移量除以屏幕宽度来获得左边按钮角标,左边按钮角标加一来获得右边按钮角标
    2.在设置标题按钮方法中,将每个按钮加入可变数组
    3.通过角标来获得2个按钮,这里需要判断如果左边按钮角标为5时,不取右边按钮
    4.通过CGAffineTransformMakeScale方法来对2个按钮缩放

  • 标题文字渐变

    • 为什么文字颜色能渐变?通过RGB来实现,更改R的值就能实现黑色和红色的渐变

具体实现请看源码,若有疑问,会第一时间解答

还在学习中,若有错误请大家指出,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,252评论 4 61
  • 全篇目录:十八米——目录 上一章:十八米--男孩篇1 初始 毕业了以后男孩和女孩各自去了不一样的学校,两个不一样的...
    花痴小姐爱撸猫阅读 549评论 0 1
  • 春雷惊蛰 鼓点舒畅 风吹雨欲动 常常想不懂 她不怕雷 她不怕我 她什么都不怕 这是被劈过多少次的绝望 一身铠甲 源...
    橙子叶阅读 161评论 0 0
  • 不得不说白渣男,我靠,简直就是渣男中的极品!骗了小蚯蚓,还自砸电脑、iPad报警污蔑樊姐,这狗日的,还故意刁难小...
    莉莉安lilianan阅读 271评论 0 0
  • 一般验证方法都是获取到textarea然后判断它的字符串长度,这样确实是可以验证的,但是它有一个问题就是,如果用户...
    skills阅读 615评论 0 0