UINavigationBar『导航栏头像缩放』

引言:

类似简书 个人中心 滚动 头像缩放效果;


# 一. 效果


# 二. 思路

  1. scrollViewDidScroll视图滚动的代理方法中,根据视图偏移量来判断图片的状态。
  2. 使用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

     *  缩放效果  两个参数: 代表宽,高的缩放比例
     */
}