iOS-导航头像缩放,支持点击回调
在很多App中,经常存在一种需求就是,界面上下滚动时用户的头像也会跟着滚动,而用户头像在视图向上滚动一定范围时停留并在导航栏的位置
基本用法如下:
1、单纯的实现这一效果:
- (LEOHeaderView *)headerView {
if (!_headerView) {
_headerView = [[LEOHeaderView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kImageHeight)];
[_headerView setBackgroundImage:[UIImage imageNamed:@"background.jpg"]];
[_headerView setHeaderImage:[UIImage imageNamed:@"header.jpg"] text:@"leiliang"];
}
return _headerView;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
[self.headerView reloadWithScrollView:scrollView];
}
2、给头像添加点击回调:
[self.headerView pressHeaderImageWithBlock:^{
NSLog(@"点击头像");
}];
3、在视图滚动到顶部位置时改变navigationBar的颜色:
// navigationBar 的颜色可以根据这个方法来调整
// @param reachtop: YES 已经滚动到顶部, NO 在顶部以下
__weak typeof(self) weakSelf = self;
[self.headerView scrollViewStateChangeWithBlock:^(BOOL reachtop) {
[weakSelf.navigationController.navigationBar leo_setBackgroundColor:reachtop ? [UIColor lightGrayColor] : [UIColor clearColor]];
}];
使用起来很简单,只需要这几行代码就可以了,另外为了防止大家在使用过程中因为一些细节问题导致有bug出现,这里列出一些注意事项,只要大家按照这样做就一定没有问题了,具体如下:
1、在 - (void)viewWillAppear:(BOOL)animated 方法中需要调用一次 [self.headerView reloadWithScrollView:self.tableView],为了防止在刚进入这一页面的时候视图有偏差
2、需要设置 tableView 的 contentInset 的 top 值为 kImageHeight - kNavigationBarHeight
3、需要设置 tableView 的背景色为 [UIColor clearColor],否则会遮挡视图
4、需要设置 tableView 的顶部据屏幕顶部为 64,否则如果你想设置navigationBar为透明时顶部有留白
5、需要将视图插入到 tableView 的底部,这里是将视图加在 self.view 上,并在tableView的底部,[self.view insertSubview:self.headerView belowSubview:self.tableView]
6、需要在 - (void)scrollViewDidScroll:(UIScrollView *)scrollView 方法中调用 [self.headerView reloadWithScrollView:scrollView]
7、需要设置 self.automaticallyAdjustsScrollViewInsets = NO; 防止滚动视图有偏差
最后献上Demo地址:http://download.csdn.net/detail/hbblzjy/9597855
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
iOS-导航头像缩放,支持点击回调的更多相关文章
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势) 1.UIGestureRecognizer介绍 手势识别在iOS上非常重要,手势操作移动设备的重要特征,极大的增加 ...
- ios iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势) 转自容芳志大神的博客:http://www.cnblogs.com/stoic/archive/2013/02/27/2940 ...
- iOS开发--UIButton 设置圆角 边框颜色 点击回调方法
UIButton *signBtn = [UIButton buttonWithType:UIButtonTypeCustom]; signBtn.frame = CGRectMake(, , , ) ...
- 关于ios导航控制器的知识总结
关于ios导航控制器的知识总结 添加了导航控制器后: 1.一个导航控制器会有一个顶部导航栏navigationbar和一个底部工具栏toolbar,它们是导航控制器navC的属性.且导航栏默认是不隐藏 ...
- iOS面向编码|iOSVideoToolbox:读写解码回调函数CVImageBufferRef的YUV图像
iOS面向编码|iOSVideoToolbox:读写解码回调函数CVImageBufferRef的YUV图像 本文档基于H.264的解码,介绍读写Video Toolbox解码回调函数参数CVImag ...
- IOS的UIWebView中JS点击事件,需要加入cursor:pointer;属性才可以
IOS的UIWebView中JS点击事件,需要加入cursor:pointer;属性才可以. Android的WebView可以支持外链样式,js文件:IOS则需要改为内嵌样式和JS文件.
- 【微信要跪】 iOS 应用如何完全支持 IPv6-ONLY 网络?
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- 移植samba到ios平台,最新支持ios8.3
移植samba到ios平台,最新支持ios8.3 下载https://github.com/kolyvan/kxsmb 开源项目 1 cd samba-4.1.14 2 vi Rakefile 修 ...
- iOS中UITableView的cell点击事件不触发didSelectRowAtIndexPath(汇总)
iOS中UITableView的cell点击事件不触发didSelectRowAtIndexPath 首先分析有几种原因,以及相应的解决方法 1.UITableViewCell的userInterac ...
随机推荐
- 如何找回Oracle所有用户丢失的密码
如何找回Oracle所有用户丢失的密码: 方法一:1.以操作系统验证的方式登录 SQL>conn / as sysdba; 2.查看系统中的用户名. SQL>select USERNAME ...
- LintCode题解之判断是否为平方数之和
简单粗暴 public class Solution { /* * @param : the given number * @return: whether whether there're two ...
- django模板语言中的extends,block和include
extends和block一起用 它们用于母版和子版的继承 在母版html中将一些需要替换的部分用{% block xxx %}...{% endblock %}括起来, 在子版html中,在第一行需 ...
- C#基础拾遗系列之二:C#7.0新增功能点
第一部分: C#是一种通用的,类型安全的,面向对象的编程语言.有如下特点: (1)面向对象:c# 是面向对象的范例的一个丰富实现, 它包括封装.继承和多态性.C#面向对象的行为包括: 统一的类型系统 ...
- Django中过期@cache_page中缓存的views数据
django的缓存系统中,cache_page 这个装饰器非常好用,只要添加一个装饰器就可以缓存views的响应内容,但是django没有提供过期这个views缓存数据的功能. @cache_page ...
- Android开发学习之路--性能优化之布局优化
Android性能优化方面也有很多文章了,这里就做一个总结,从原理到方法,工具等做一个简单的了解,从而可以慢慢地改变编码风格,从而提高性能. 一.Android系统是如何处理UI组件的更新操作的 ...
- sublime text package control 被墙的解决办法
似乎没有办法 只能碰运气, 时好时坏. 或者手动安装 趁着好的时候, 下载离线包 https://packagecontrol.io/Package%20Control.sublime-package ...
- python用openpyxl操作excel
python操作excel方法 1)自身有Win32 COM操作office但讲不清楚,可能不支持夸平台,linux是否能用不清楚,其他有专业处理模块,如下 2)xlrd:(读excel)表,xlrd ...
- Servlet常用操作(基础)
----------------------------------------------------------------------------------------------[版权申明: ...
- Linux下一次数据仓库进行迁移记录
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52768613 前言:数据库每天的 ...