实现ios手机QQ空间导航栏控制器时隐时现效果,kvo的应用
来源:互联网 发布:会员积分软件dnnyun 编辑:程序博客网 时间:2024/05/22 11:44
// 这段代码可以实现导航栏时隐时现效果,kvo的应用
// ViewController.m
#import "ViewController.h"
#import "TableViewCell.h"
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
{
UITableView * _tableView;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
//self.view.backgroundColor = [UIColor blueColor];
self.navigationController.edgesForExtendedLayout =UIRectEdgeNone;
self.navigationController.navigationBar.translucent = YES;
[self.navigationController.navigationBarsetBarTintColor:[UIColororangeColor]];
_tableView = [[UITableViewalloc]initWithFrame:CGRectMake(0,0, self.view.frame.size.width,self.view.frame.size.height-64)style:UITableViewStylePlain];
_tableView.delegate =self;
_tableView.dataSource =self;
_tableView.backgroundColor = [UIColorclearColor];
_tableView.bounces =YES;
[self.viewaddSubview:_tableView];
[_tableViewaddObserver: selfforKeyPath: @"contentOffset"options: NSKeyValueObservingOptionNewcontext:nil];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
CGFloat offset=_tableView.contentOffset.y;
NSLog(@"offset:%f",offset);//越来越大 想要实现效果:一开始全显示,后来颜色变浅
CGFloat delta=1-offset/100.f;
delta=MIN(1,delta);
NSLog(@"%f",delta);
self.navigationController.navigationBar.alpha=MIN(1,delta);
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 100;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
TableViewCell * cell = [[[NSBundlemainBundle]loadNibNamed:@"TableViewCell"owner:selfoptions:nil]firstObject];
if (indexPath.row==0) {
cell.myImage.hidden =NO;
}else{
cell.myImage.hidden =YES;
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row==0) {
return 180.0f;
}
return 60.0f;
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
另附一则参考别人相反的实现
//添加监听者
[self.tableView addObserver: self forKeyPath: @"contentOffset" options: NSKeyValueObservingOptionNew context: nil];
/**
* 监听属性值发生改变时回调
*/
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
CGFloat offset = self.tableView.contentOffset.y;
CGFloat delta = offset / 64.f + 1.f;
delta = MAX(0, delta);
[self alphaNavController].barAlpha = MIN(1, delta);
}
- 实现ios手机QQ空间导航栏控制器时隐时现效果,kvo的应用
- iOS中的UINavigationController导航栏视图控制器的简单应用
- 导航控制器的应用
- 模仿手机QQ底部导航栏Icon拖拽效果
- 【iOS学习笔记】QQ侧滑导航栏的实现
- [IOS]非常不错的导航控制器的应用Demo
- kvo实现导航栏透明
- iOS导航控制器和标签栏控制器的结合
- iOS 导航控制器、导航条、导航项、控制器的关系
- 【iOS开发-24】导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果
- iOS开发导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果
- ios--导航控制器的基本概念
- iOS导航控制器的使用
- iOS导航控制器的注意事项
- iOS实现导航栏全透明效果
- iOS--KVO的实现原理与具体应用
- iOS开发-- KVO的实现原理与具体应用
- iOS--KVO的实现原理与具体应用
- 通过BroadcastReceiver和 service 实现开机自动启动
- bindService 实现音乐播放的功能
- Android Scroll分析--实现滑动的七种方法
- OpenGL超级宝典7th简体中文-第二章前奏-开发环境的搭建
- Linux display subsytem(1)_概述
- 实现ios手机QQ空间导航栏控制器时隐时现效果,kvo的应用
- Corneerstone (svn)解决项目上传后,.a文件缺失问题解决记录
- Android命名规范详细
- 问题,值得研究 申请内存不释放没有问题
- Android入门第八篇之GridView(九宫图)
- POJ 1741 Tree(点分治)
- 关于div高度为0使得下部元素侵占空间问题
- UVALive 6900Road Repair(点分治)
- unable to fine a java virtual machine