关于导航栏渐变,本人在写APP的时候,发现了各路大神各现其通,其实我觉得这个是个很简单的问题,不需要搞得那么麻烦,对个项目要求整齐来说,一般会建一个工具类,自定义View,各个同事需要的时候,直接调用即可,如下代码:

-(void)craetNavBar{
self.Naviews=[[NavBarViewHiddenAphle alloc]initWithFrame:CGRectMake(, , ScreenWidth, Height_NavBar)];
self.Naviews.alpha = 0.0;
self.Naviews.delegate=self;
[self.view addSubview:self.Naviews];
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGFloat minAlphaOffset = - Height_NavBar;
CGFloat maxAlphaOffset = ;
CGFloat offset = scrollView.contentOffset.y;
CGFloat alpha = (offset - minAlphaOffset) / (maxAlphaOffset - minAlphaOffset);
// if (offset <= 0) {
// self.Naviews.alpha = 0.0;
// }else{
// self.Naviews.alpha = alpha;
// NSLog(@"%f",alpha);
//
// }或者:
if (offset <= ) {
self.Naviews.alpha = 0.0;
}else{
self.Naviews.alpha = offset/maxAlphaOffset;
NSLog(@"%f",alpha); } }

第二种方式便是,运行时动态绑定

我们可以在运行时动态绑定他的背景视图,然后设置他的背景透明度,网上有一个通过类别方式动态绑定实现导航栏颜色渐变的三方框架,感兴趣的朋友可以自行去研究研究LTNavigation。

第三便是直接获取那张ImageView,然后设置他的透明度。

其实我们从结构图中可以看出来,它是NavigationBar的子视图,我们可以通过for…in循环遍历navigationBar.subviews,然后获得这个view。

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
//设置透明导航栏
UIView *barImageView = self.navigationController.navigationBar.subviews.firstObject;
barImageView.alpha = 0.0;
} - (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat minAlphaOffset = - ;
CGFloat maxAlphaOffset = ;
CGFloat offset = scrollView.contentOffset.y;
CGFloat alpha;
if (offset <= ) {
alpha = 0.0;
} else {
alpha = (offset - minAlphaOffset) / (maxAlphaOffset - minAlphaOffset);
}
UIView *barImageView = self.navigationController.navigationBar.subviews.firstObject;
barImageView.alpha = alpha;
}

IOS 滑动指示导航栏 渐变的更多相关文章

  1. iOS 滑动隐藏导航栏-三种方式

    /** 1隐藏导航栏-简单- */    self.navigationController.hidesBarsOnSwipe = YES; /** 2隐藏导航栏-不随tableView滑动消失效果 ...

  2. iOS开发之 -- 判断tableview/scrollview的滑动方法,及导航栏渐变的实现代码

    开发的过程中,肯定会用到在视图想上滑动的时候,在导航处做一些操作,比如向上滑动的时候,做个动画,出现一个搜索框,或者其他的操作,那么我们怎么来判断它的滑动方向呢? 首先我们应该知道tableview继 ...

  3. 【转】iOS中设置导航栏标题的字体颜色和大小

    原文网址:http://www.360doc.com/content/15/0417/11/20919452_463847404.shtml iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参 ...

  4. iOS中设置导航栏标题的字体颜色和大小

    iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参考下. 在平时开发项目的时候,难免会遇到修改导航栏字体大小和颜色的需求,一般使用自定义视图的方法,其实还存在一种方法. 方法一:(自定义视图的 ...

  5. iOS系统中导航栏的转场解决方案与最佳实践

    背景 目前,开源社区和业界内已经存在一些 iOS 导航栏转场的解决方案,但对于历史包袱沉重的美团 App 而言,这些解决方案并不完美.有的方案不能满足复杂的页面跳转场景,有的方案迁移成本较大,为此我们 ...

  6. iOS 动态修改导航栏颜色 UINavigationBar

    示例 所谓动态修改  意思是 在当前页面滚动的过程中 亦或 是在 触发返回事件\进入一个新的页面  导航栏的动态变化 由于系统级别的navBar 高度集成  很多自己想实现的功能 很不好弄 如果是通过 ...

  7. 仿知乎/途家导航栏渐变文字动画效果-b

    demo.gif 效果图如上,简单分析下 1.导航栏一开始是隐藏的,随着scrollView滚动而渐变 2.导航栏左右两边的navigationItem是一直显示的 3.导航栏参考了途家app,使用了 ...

  8. iOS学习——更改导航栏的返回按钮的标题与颜色

    转载自:修改navigationController返回按钮颜色和文字 今天在做项目时遇到这个问题,试了很多方法都失败了.最后终于找到正确的方案了,在这里分享给大家. 引言 在iOS开发过程中,Nav ...

  9. iOS: 状态栏、导航栏、标签栏、工具栏

    三种项目栏总结: 工具栏:UIToolBar 导航栏:UINavigationBar 标签栏:UITabBar   UIToolBar的按钮单元为:UIBarButtonItem UINavigati ...

随机推荐

  1. 搭建mock服务器(微信小程序)

    搭建mock服务器(微信小程序) 如何在微信小程序使用mock.js实在是个问题,为了完全模拟访问路由和数据,选择在搭建本地mock服务器是一个不错的选择. 以下示例了一个mock服务器的搭建过程以及 ...

  2. EasyUI获取正在编辑状态行的索引

    function getRowIndex(target){ var tr = $(target).closest("tr.datagrid-row"); return paseIn ...

  3. Freemaker基于word模板动态导出汇总整理

    Freemaker基于word模板动态导出汇总整理 一.使用的jar包: 二.Word模板动态导出的基本思路: 1.首先通过自己在word中创建好需要导出的word文本+表格的模板,模板中需要填写内容 ...

  4. Nuxt.js 基础入门教程

    原文链接 Vue 开发一个单页面应用,相信很多前端工程师都已经学会了,但是单页面应用有一个致命的缺点,就是 SEO 极不友好.除非,vue 能在服务端渲染(ssr)并直接返回已经渲染好的页面,而并非只 ...

  5. 学习python第二天 流程判断

    while循环age_of_Jim = 56 count = 0 #开始计数while True: #循环代码 if count ==3:#如果次数=3 break#退出 guess_age = in ...

  6. A1031 Hello World for U (20)(20 分)

    A1031 Hello World for U (20)(20 分) Given any string of N (>=5) characters, you are asked to form ...

  7. Crane UVA - 1611 思路+构造

    题目:题目链接 思路:思路+构造,假设 i  在pos 位置,那么如果 (pos-i-1)*2+i+1 <= n,那么可以操作一次换过来,如果他们之间元素个数是偶数,那么交换 i - pos,如 ...

  8. Leetcode 96. 不同的二叉搜索树

    题目链接 https://leetcode.com/problems/unique-binary-search-trees/description/ 题目描述 给定一个整数 n,求以 1 ... n ...

  9. 矩阵乘法在hadoop的实现

    先随机生成一个矩阵,矩阵的行数与列数由用户输入: #!/bin/bashfor i in `seq 1 $1`do for j in `seq 1 $2` do s=$((RANDOM%100)) e ...

  10. 关于RelativeLayout设置垂直居中对齐不起作用的问题

    直接上代码 1.原有代码:(红色字体部分不起作用,无法让RelativeLayout中的textview居中) <RelativeLayout Android:id="@+id/aut ...