NavigationBarScaleViewDemo -


MIT
跨平台
Objective-C

软件简介

iOS导航条自由缩放头像效果。

实现原理

从效果图可以看到以下几点:

  1. 向上移动头像会缩小,但是有下限

  2. 向下移动头像会放大,但是有上限

  3. 头像的起点y始终不变

所以,我们首先要知道如何缩放控件,也就是使用transform来实现。然后每次都需要更新头像的y坐标,以保证y值不变。既然缩小有下限,放大有上限,所以我们应该设置一个最小缩放系数及最大缩放系数。

要设置最小/最大缩放系数,我们就需要计算出来,但是如何计算呢?其实挺简单的,我们只需要设置下拉或者上拉需要处理缩放的最大距离,就可以计算出来了。

计算放大系数: MIN(1.5, 1 – offsetY / 300);
计算缩小系数: MAX(0.45, 1 – offsetY / 300);

假设正常状态下用户头像的大小为70,当放大到最大时,不得超过105;当缩小到最小时,不得小于31.5.则这个最大倍数1.5就是我们期望用户
头像可放大的最大值除以正常状态下的值,即105/70.0=1.5。同样,最小倍数0.45计算公式为:31.5 / 70.0 = 0.45.

为了保证在缩放过程中,y坐标不变,那么就需要动态地更新y坐标,也就是在缩放时,将y坐标固定。