iOS 超Easy实现 渐变导航栏
来源:互联网 发布:域名怎么注册? 编辑:程序博客网 时间:2024/05/14 11:28
接着上周的项目, 在上周我别出心裁的在自定义TabbarController中加入了自定义转场动画, 受到了大家广泛的喜爱, 再次表示感激, 今天我们继续实现LifestyleViewController的第二个功能渐变导航栏!!
渐变导航栏, 现在很多项目里都有这个功能, 我们就把这个功能集成到我们的项目中来; 根据设计图纸需求, 我们需要在轮播图下面有一个搜索栏, 搜索栏根据滑动偏移到导航栏之上.
具体怎么实现呢, Easy啦~ 不急,我们一步一步来.
创建搜索栏Cell
首先打开我们的项目先在轮播图Cell下创建一个搜索栏Cell 并添加子控件.
这时你可能会问 为什么不在Cell中添加TextField之类的, 由于我们的效果,之后再向您揭晓;
控制器 多Cell设计
这时回到控制器, 但是控制器中不止一种Cell, 我们怎么来设计呢?? 我的实现方法是KeysArr, 那什么是KeysArr呢,我们来看代码.
首先我们需要创建一个全局类 (这个写法和上周的 投机流 自定义转场有异曲同工之妙)
创建全局类
全局类中的每一个Key对应着你的一个Cell
.h
.m
keys数组
接着我们创建一个数组来持有这些key;
Tableview delegate mothod
最后在代理方法中进行判断
这样当不需要某个cell显示的时候,只需要将keys从KeysArr中移除即可, 是不是很方便!!
创建搜索栏View
这里需要提醒大家的一点, 当你在自定义View的时候最好要实现initWithFrame
和initWithCoder
两个方法, 这样无论是用纯代码还是Xib,Storyboard使用自定义View时都能够直接加载!!
实现位移渐变
重于到今天的重头戏了, 我们来实现位移渐变!! 上面的自定义View 我们并不是将其添加到Cell之中, 而是将他添加到navigationController.view
之上!!
创建两个自定义View
其中一个的frame = self.navigationController.navigationBar.frame
并将其添加到titleView
中!! 另一个将其加载navigationController.view
中!! 并在viewWillLayoutSubviews
中设置布局!!
监听偏移
我们将设置导航栏背景颜色的方法从LoadView移到scrollViewDidScroll
中来
这里需要和大家细说一下监听偏移渐变,其实很简单,就是一个公式而已 float alpha = 1 - (offset) - scrollView.contentOffset.y) / offset);
其中的offset 指的是y轴方向从初始值viewWillLayoutSubviews
中的初始设定 到导航栏的位移!!
每滑动下重新调用viewWillLayoutSubviews
方法重新布局, 当其到达位移点的时候, 两个View进行交换就达到了 预期的效果!!
对位移渐变的封装
上面的代码看到晕晕乎乎,讲的不清不楚!! 我们来讲这个功能封装一下, 先创建一个UIViewController的Catagory 实现方法!!
- scrollView: 传入需要位移的scrollView;
- titleView: 传入导航栏上的titleView;
- movableView: 传入需要移动的自定义View;
- offset: 传入y轴方向从初始值到导航栏的位移;
- color: 传入导航栏颜色
这样我们在调用的时候就简单明了多了!! 以后做到这个功能的时候可以直接拿来用了!!
模拟效果
为了能看到效果 我们在控制器中多加几个cell 方法很简单只要在Key数组中多加几个对象即可! 并在key == @"" 时加载如下Cell
好了 我们来看下显示效果吧~~
最终显示
github 下载地址!!!
上周有人说我没有放出Demo 小弟真是冤枉至极, 这次特地做出标注(下方链接跳转)!!
具体源码及SQExtension方法信息 请到github上进行下载! 喜欢的朋友送下小星星哟!!
- iOS 超Easy实现 渐变导航栏
- iOS 超Easy实现 渐变导航栏
- iOS 超 Easy 实现 渐变导航栏
- iOS 导航栏渐变
- iOS 导航栏颜色渐变
- 几句话实现导航栏透明渐变 – iOS
- 几句话实现导航栏透明渐变 – iOS
- 几句话实现导航栏透明渐变-iOS
- 几句话实现导航栏透明渐变(iOS)
- 几句话实现导航栏透明渐变(iOS)
- iOS开发实现导航栏透明度渐变效果
- ios开发:导航栏navigationbar背景渐变
- 导航栏透明渐变(iOS)
- iOS开发-玩玩渐变导航栏
- iOS开发Navigation 导航栏渐变
- iOS 导航栏标题文字颜色渐变
- iOS开发 - 渐变导航栏终极版
- iOS设置导航栏渐变颜色
- 第二本第四章课后4加盟申请表
- 《改善Python程序的91个建议》阅读笔记
- BSS段和数据段的区别
- VxWorks开发板驱动程序学习之LCD(2.2寸)
- 剑指offer(10)-打印二叉树的镜像
- iOS 超Easy实现 渐变导航栏
- socket.io 实现在线聊天室
- 毕业的第一份工作,到底什么才重要
- 怎么安装VMwaretools在Linux系统里
- 2 进制的转化
- Git速查
- 51单片机—电亮LED灯
- 关键字const的扩展
- Android 获取当前应用的版本号