ios导航栏透明

2023-11-03

功能需求:根新浪微博个人主页类似,下拉拉伸放大图片下拉刷新(前面文章已解决),向上滑动的时候,导航栏的透明度逐渐增加,最后变成不透明的。当然说起来感觉其实没什么,不就是滑动改变透明度吗,但是做起来完全不是你想象的那样。
首先解决透明度的问题,让导航栏透明起来,如何做呢,我刚开始的做法是根据之前的经验,直接在导航栏上贴一张透明的图片,但是由于项目原本就设置有蓝色的导航背景了,所以怎么改也改不过来,有种欲哭无泪的感觉,于是各种找原因,甚至把基类里面的东西都改了,结果不尽人意,于是在群里找大神问,终于有大神回话,给出了 这篇文章,简直救命稻草,感觉作者的境况跟我类似,于是乎就认真看完,恍然大悟,原来导航条上竟然还有其他view,简直坑死人不要命,而且还没api。。。所幸作者比较强大,写了一个分类,于是我就直接取过来,然后开始设置

        [self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:al]];

好了,终于透明了,当然,这句话是丢在  -( void )viewWillAppear:( BOOL )animated 里面,不然当出来的时候你会发现你的导航条还是蓝色的,只不过稍微一动就变透明了。。  第一步完成了。。。
然后在scrollerview 的代理里面设置

#pragma mark - UIScrollViewDelegate

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    //下拉隐藏头部

    if (scrollView == self.zoneTableView) {

        constantHeaderView.hidden = scrollView.contentOffset.> -128? NO:YES;

    }

    //下拉伸伸图片

    CGFloat yOffset = scrollView.contentOffset.y+64; //如果有导航控制器,这里应该加上导航控制器的高度64

    if (yOffset < -IMAGEHEIGHT) {

        CGRect frame = _zoomImageView.frame;

        frame.origin.y = yOffset;

        frame.size.height = -yOffset;

        _zoomImageView.frame = frame;

    }

    //下拉刷新

    if (yOffset < -IMAGEHEIGHT-60) {

        [self refreshNuNuZoneInfo];

    }

    //下拉改变导航条的颜色

    float al =(yOffset + IMAGEHEIGHT)/IMAGEHEIGHT;

    if ( al <= 1) {

        [self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:al]];

    }else{

        [self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:1]];

    }

 

}

最下面这段就是,其他的可以当作没看见,之前有说过下拉拉伸图片和下拉刷新出现实践冲突的,就在这里解决。

下面就开始解决坑爹的玩意儿了,首先,当你点击cell跳转的时候你会发现其他页面的,你会发现其他页面的导航条变色了 0.0  你能说什么呢,改! 

- (void)viewDidDisappear:(BOOL)animated

{

    [[BaiduMobStat defaultStat] pageviewEndWithName:@"关注"];

    [super viewDidDisappear:animated];

    [self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:1]];

    _topView.hidden = YES;

 

}


在这个页面消失的时候 让导航条不透明,好了,解决了 。。。

然后继续滑动,然后跳转,好了下一页颜色没变化,但是!!!返回来之后怎么又透明了???,为什么呢,原来是在viewwill 里面设置的关系,真扯淡,改改!

-(void)viewWillAppear:(BOOL)animated{

    CGFloat yOffset = zoneTableView.contentOffset.y+64;

    float al = (yOffset+IMAGEHEIGHT)/IMAGEHEIGHT;

    if (al <= 1) {

        [self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:al]];

    }else{

        [self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:1]];

    }

    _topView.hidden = NO;

    [self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"touming"]];

    

    //开启定时器

    [_myTimer setFireDate:[NSDate distantPast]];


 

}

好了,直接改成这样就不用再乱设置什么东西了,不然当你刚滑动到半透明的时候还会出现坑爹的问题,改这玩意改了一周多,遇到蛋疼问题不计其数。。。


还有

- (void)viewDidAppear:(BOOL)animated

{

    [super viewDidAppear:animated];

    if (!_isShowCollect) {

        CGFloat yOffset = zoneTableView.contentOffset.y;

        float al = (yOffset+IMAGEHEIGHT)/IMAGEHEIGHT;

        if (al <= 1) {

            [self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:al]];

        }else{

            [self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:1]];

        }

        _topView.hidden = NO;

        [self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"touming"]];

        [self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"touming"]];

    }

 

}


这个是其他页面遇到的问题,不想说什么了,我想静静,好累好累。。。


参考例子 http://tech.glowing.com/cn/change-uinavigationbar-backgroundcolor-dynamically/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ios导航栏透明 的相关文章

随机推荐

  • ANSYS Workbench线圈磁场仿真

    前一篇博客介绍了永磁体磁场的仿真分析 这里再介绍一下线圈磁场的仿真分析 步骤如下 1 利用SolidWorks建立线圈和铁芯模型 线圈内径为10mm 外径为20mm 铁芯直径为10mm 模型如下图所示 2 在Workbench中新建静磁学分
  • ATT&CK红队评估实战靶场(一)

    描述 红队实战系列 主要以真实企业环境为实例搭建一系列靶场 通过练习 视频教程 博客三位一体学习 另外本次实战完全模拟ATT amp CK攻击链路进行搭建 开成完整闭环 后续也会搭建真实APT实战环境 从实战中成长 关于环境可以模拟出各种各
  • JOOQ 代码生成

    Maven Java 项目pom xml 文件
  • 第1143期AI100_机器学习日报(2017-11-04)

    AI100 机器学习日报 2017 11 04 Uber开源深度概率编程语言Pyro 爱可可 爱生活 宾州树库和CTB的Python预处理脚本 hankcs TextBlob Twitter情感分析实战 爱可可 爱生活 Capsule Ne
  • 跨域问题以及在springcloud的gateway中解决跨域问题

    一 什么是跨域问题 跨域问题 当两个页面的域名不一致时 浏览器禁止请求的发起者与服务端发生跨域ajax请求 请求被浏览器拦截的问题 发生跨域问题需要满足的点有 1 两个页面的域名不一致 2 两个页面发生的是ajax请求 这里不允许跨域是浏览
  • echart 设置y轴间隔_分割ECharts的y轴并设置坐标轴间隔

    在 ECharts 图表中的 y 轴的分割段数默认为5 这是由于 yAxis 中的 splitNumber 的决定的 那么我们如果想要在 y 坐标轴上进行更多的分段呢 如何让其刻度间隔变得更加的细致呢 在下文中您会得到答案 yAxis sp
  • javascript cookie session和web storage存储

    众所周知 http是一种无状态存储 现实中的业务需要一定的业务状态 例如某电商网站的用户登录 购物车 如何标示用户和认证一个用户 最早的方案就是cookie存储了 通过引入cookie和session体系机制来维护状态信息 即用户第一次访问
  • 刚刚更新win11,记事本消失怎么处理?你需要注意些什么?

    记录window11的bug hello 我是小索奇 昨天索奇从window10更新到了window11 由于版本不兼容卸载了虚拟机 这是第一个令脑壳大的 算了 还是更新吧 了解了解win11的生态 后期重新装虚拟机 第一个可能问到的问题
  • 递归和非递归

    1 递归就是函数调用函数本身 运行起来就是函数嵌套函数 层层嵌套 所以函数调用 参数堆栈都是不小的开销 但是程序简单 2 非递归就是不断地对参数入栈 出栈 省去了函数层层展开 层层调用的开销 虽然参数出入栈次数多了 但是一般都开辟固定的足够
  • Java实现float转换成int代码_Java中如何将float转换为long或int?(附代码)

    本篇文章给大家带来的内容是关于Java中如何将float转换为long或int 附代码 有一定的参考价值 有需要的朋友可以参考一下 希望对你有所帮助 在Java中 有三种方法可以将float转换为long或int 但我们只关注long数据类
  • Apereo CAS反序列化漏洞中数据加解密研究

    Apereo CAS反序列化漏洞中数据加解密研究 0x01 简介 0x02 网上获取资料 0x03 初步运行失败 1 分析 2 Tips 0x04 分析原因 1 自己写解密算法 直接使用cas工程的相关jar包 java文件 调用解密函数
  • java求解水仙花数

    直接在某OJ平台上粘贴他的要求过来 水仙花数的要求也基本都是那样的 本地是能够跑的 只是OJ平台上对空格的处理还有点问题 题目描述 春天是鲜花的季节 水仙花就是其中最迷人的代表 数学上有个水仙花数 他是这样定义的 水仙花数 是指一个三位数
  • 计算机图形学基础:双向反射分布函数 BRDF

    文章目录 光照 照明 Illumination 预备知识 球面坐标 Spherical Coordinate 立体角 Solid Angle 投影面积 Foreshortened Area 光能 Radiant Energy 光通量 Rad
  • 【第六期】拿不到offer全额退款

    前 言 学院第四期课程在2019年10月结课 第一至第四期具有求职意向的同学中 目前已经有80 的同学拿到了国内外名企的AI算法岗位offer 或者国外名校的AI 硕士 全奖博士录取 offer 在大家的认可下 我们开始了第六期的课程 在本
  • MyBatis 查询数据库

    目录 1 什么是 MyBatis 2 MyBatis 环境搭建 2 1 创建数据库和表 2 2 添加 MyBatis 框架支持 2 3 配置数据库连接和MyBatis 2 4 添加代码 2 4 1 添加实体类 2 4 2 添加 mapper
  • 隐私合规:检测第三方SDK调用的隐私权限

    隐私合规 检测第三方SDK调用的隐私权限 原文地址 隐私合规 检测第三方SDK调用的隐私权限 前言 看了一圈各大网站目前关于隐私合规检测的分享 发现大家几乎都是自己写一套动态代理 Hook或者ASM来实现代码拦截从而检测不合规的代码堆栈 虽
  • 【软考-中级】系统集成项目管理工程师-计算题

    系统集成项目管理工程师 二 计算题 题型一 EMV 预期货币价值 题型二 加权系统 题型三 自制和外贸决策 采购管理 题型四 沟通渠道 沟通管理 题型五 投资回收期 回收率 题型六 进度 网络计算题 学习章节 软考 中级 系统集成项目管理工
  • 解锁tRPC高性能密码:网络方案简介

    导语 本文介绍了部分高性能网络方案 包括RDMA HARP io uring等 从技术原理 落地可行性等方面 简要地做出分析 希望能对此方面感兴趣的开发者提供一些经验和帮助 一 背景 业务中经常会有这样的场景 随着网卡速率的提升 10G 2
  • 算法基础:复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

    前言 我们都知道 数据结构和算法本身解决的是 快 和 省 的问题 即如何让代码运行得更快 如何让代码更生存储空间 所以 执行效率是算法一个非常重要的考量指标 那如何来衡量我们编写的算法代码的执行效率呢 那就是时间 空间复杂度分析 为什么需要
  • ios导航栏透明

    功能需求 根新浪微博个人主页类似 下拉拉伸放大图片下拉刷新 前面文章已解决 向上滑动的时候 导航栏的透明度逐渐增加 最后变成不透明的 当然说起来感觉其实没什么 不就是滑动改变透明度吗 但是做起来完全不是你想象的那样 首先解决透明度的问题 让