NavigationBar 渐隐效果
2019独角兽企业重金招聘Python工程师标准>>>
考虑到继承UINavigationBar使用起来会非常不便,我们决定用Category来实现,首先定义我们的category:
@interface UINavigationBar (BackgroundColor)
- (void)lt_setBackgroundColor:(UIColor *)backgroundColor;@end
实现:我们使用associatedObject将overlayView动态地绑定到UINavigationBar的instance上,当调用lt_setBackgroundColor的时候,我们只要更新这个overlayView就行啦~
@implementation UINavigationBar (BackgroundColor)static char overlayKey;- (UIView *)overlay
{ return objc_getAssociatedObject(self, &overlayKey);
}- (void)setOverlay:(UIView *)overlay
{objc_setAssociatedObject(self, &overlayKey, overlay, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}- (void)lt_setBackgroundColor:(UIColor *)backgroundColor
{ if (!self.overlay) {[self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; // insert an overlay into the view hierarchyself.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -20, [UIScreen mainScreen].bounds.size.width, self.bounds.size.height + 20)]; self.overlay.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;[self insertSubview:self.overlay atIndex:0];} self.overlay.backgroundColor = backgroundColor;
}
@end
最后在scrollViewDidScroll中,我们就可以动态地修改UINavigationBar的backgroundColor了:
[self.navigationController.navigationBar lt_setBackgroundColor:[color colorWithAlphaComponent:alpha]];
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGFloat alpha=scrollView.contentOffset.y/90.0f>1.0f?1:scrollView.contentOffset.y/90.0f;
[self.navigationController.navigationBar setBackgroundImage:[self getImageWithAlpha:alpha] forBarMetrics:UIBarMetricsDefault];
}
#pragma handle image -mark
//合成图片
-(UIImage *)getImageWithAlpha:(CGFloat)alpha{
UIColor *color=[UIColor colorWithRed:1 green:0 blue:0 alpha:alpha];
CGSize colorSize=CGSizeMake(1, 1);
UIGraphicsBeginImageContext(colorSize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, CGRectMake(0, 0, 1, 1));
UIImage *img=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
转载于:https://my.oschina.net/gongxiao/blog/537848
NavigationBar 渐隐效果相关推荐
- Image Warp插件实现图片点击扩大渐隐效果
点我下载jQuery Image Warp插件源代码[在线演示 ][源程序下载 ] 使用说明 需要使用jQuery 库文件和jQuery Image Warp 插件库文件 使用实例 一,包含文件部分 ...
- 日落20181125001 - UGUI组件应用之Animation和CanvasGroup制作渐现渐隐效果
环境 系统:Windows 10 引擎:Unity 2017.2.1f1 目的 使用Animation和Canvas Group制作渐隐渐现的效果. (1)首先把场景布局如此 (2)创建Animato ...
- cocos:MotionStreak拖尾渐隐效果
目录 前言 小例 创建和传参 推送 结语 前言 本文简介cocos的MotionStreak组件,该组件非常方便的实现了一个拖尾效果,配合粒子能够实现非常好看的效果,本文则从使用上介绍一下,以后有机会 ...
- 动画 自制弹框上滑+渐显效果
<view class="mask {{showShare ? 'slidefadeUp' : 'slidefadeDown'}}" wx:if="{{showSh ...
- jquery气泡提示效果
效果改自:http://inezha.com/p/7797945/item737 代码注释已经尽可能的详细了,也不多说了. 越用jquery就越喜欢用它... bubble.js: /* * @dat ...
- Cocos Creator 的实现拖尾效果
在游戏中,有时会需要在某个游戏对象上加上移动后的轨迹若隐若现的效果.使得游戏的效果较好,比如游戏大招,刀光,法术,流星划痕之类. Cocos Creator提供了一种内置的拖尾渐隐效果的实现方法:组件 ...
- 效果 - 收藏集 - 掘金
如何用原生 JS 实现手势解锁组件 - 前端 - 掘金 这是第三届 360 前端星计划的选拔作业题.600多名学生参与了解答,最后通过了60人.这60名同学完成的不错,思路.代码风格.功能完成度颇有可 ...
- 2.5 随从受伤溅血效果的实现———自制卡牌游戏之旅
文章目录 一.实现效果 二.具体实现 1. 对象创建 2. 编写代码 DamageEffect.cs ① 从预制体生成 ② 渐隐效果协程 ③ 差分的特效图片 DamageEffectTest.cs 三 ...
- HTML设置页面动画效果有几种,前端制作动画的几种方式(css3,js)
制作动态的网页是是前端工程师必备的技能,很好的实现动画能够极大的提高用户体验,增强交互效果,那么动画有多少实现方式,一直对此有选择恐惧症的我就总结一下,以便在开发的时候选择最好的实现方式. 1.css ...
最新文章
- MySQL 性能测试
- 类变量和实例变量的区别是什么?
- hfss和python_【技术分享】python和HFSS联合仿真微带天线的教程-射频/微波-与非网...
- java io 创建文件夹_Java中Io流操作-File类的常用操作-创建文件,创建文件夹
- python漏洞利用脚本_利用Python脚本实现漏洞情报监控与通知的经验分享
- 关与DataList和DataGrid的区别和重要性
- 多层GCN的over-smooth问题
- Wireshark教程(简介、抓包、过滤器)
- 【ArcGIS|3D分析】要素的立体显示
- 解决VMware重启IP地址改变的问题
- 最牛逼的PHP视频教程115网盘免费下载,嗷嗷给力
- librdkafka
- 计算机硬件行业深度报告,首创证券-计算机行业深度报告:物联网,研究框架-行业分析-慧博投研资讯...
- 《笨办法学python》第39课—— 列表的操作
- 用java编写矩阵运算_基本矩阵运算的Java实现
- 多伦多大学计算机硕士读几年,多伦多大学计算机硕士申请条件
- 随笔(2015.11)
- 3ds max 软件主菜单中添加新的菜单
- Linux下文件(文件夹)的压缩和解压
- 【仙变3】牧仙记版VM一键端
热门文章
- 【Leetcode_easy】657. Robot Return to Origin
- 【TensorFlow】:解决TensorFlow的ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败...
- Dubbo接口测试方法及步骤
- Linux/unix 查看端口占用
- Asp.net操作数据库方法
- “\”C++中的换行符
- 数据库实现,以及工厂方法模式实现
- 在WinAPI环境下获得1小时前系统时间
- C# 中Bitmap图像处理含增强对比度的三种方法
- MFC C++ Cstring与string互转