ios如何在导航栏缩放用户头像

现在许多应用中都会有下拉放大用户头像,上拉缩小用户头像的功能效果,今天就来实现如何随着滚动而进行缩放。

效果图:



先上思路:

既然是在导航栏上进行缩放,那就应该将图片添加到导航栏的titleView上,然后监听滚动事件,这时候最好先打印滚动的Y值,在分析进行判断然后设置比例,利用transfrom进行图片缩放。

关键代码:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    
  CGFloat offsetY = scrollView.contentOffset.y + scrollView.contentInset.top;

  CGFloat scale = 1.0;
  // 放大
  if (offsetY < 0) {
    // 允许下拉放大的最大距离为200
    // 这个值可以自由调整
    scale = MIN(1.5, 1 - offsetY / 200);
  } else if (offsetY > 0) { // 缩小
    // 允许向上超过导航条缩小的最大距离为200
    scale = MAX(0.5, 1 - offsetY / 200);
  }
  
  self.headerImageView.transform = CGAffineTransformMakeScale(scale, scale);

  // 保证缩放后y坐标不变
  CGRect frame = self.headerImageView.frame;
  frame.origin.y = -self.headerImageView.layer.cornerRadius / 2;
  self.headerImageView.frame = frame;
}



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值