UINavigationBar『导航栏头像缩放』
引言:
类似简书 个人中心 滚动 头像缩放效果;
# 一. 效果
# 二. 思路
- 在
scrollViewDidScroll
视图滚动的代理方法中,根据视图偏移量来判断图片的状态。 - 使用
CGAffineTransformMakeScale
来实时缩放图片。
# 三. 核心代码
#pragma mark - <UIScrollViewDelegate>
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
// 当前视图y值偏移量 + tableView 的顶部的内边距
CGFloat contentSet = scrollView.contentOffset.y + self.userTableView.contentInset.top;
if (contentSet >= 0 && contentSet <= IconImgViewWidth/2) { // 头像的下半部分还没有偏移到导航栏时
// 偏移量 0 - IconImgViewWidth/2 图片逐渐缩小
// 偏移量 IconImgViewWidth/2 - 0 图片逐渐放大
self.iconImgView.transform = CGAffineTransformMakeScale(1-contentSet/IconImgViewWidth, 1-contentSet/IconImgViewWidth);
self.iconImgView.y = 0;
} else if (contentSet > IconImgViewWidth/2){ // 向上滚动 超过固定高度后, 图片变为原来的一半大小
self.iconImgView.transform = CGAffineTransformMakeScale(0.5, 0.5);
self.iconImgView.y = 0;
} else if (contentSet < 0){ // 在正常界面向下拉时,界面不变
self.iconImgView.transform = CGAffineTransformMakeScale(1, 1);
self.iconImgView.y = 0;
}
/**
* CGAffineTransformMakeScale
* 缩放效果 两个参数: 代表宽,高的缩放比例
*/
}