NavigationBarScaleViewDemoiOS导航条头像缩放
iOS导航条自由缩放头像效果。
实现原理
从效果图可以看到以下几点:
-
向上移动头像会缩小,但是有下限
-
向下移动头像会放大,但是有上限
-
头像的起点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坐标固定。
评论