滑动scrollview时,随距离改变属性的动画原理!(类似陌陌,网易,path个人属性界面的动画效果)

遇到的问题:

有些动画效果是通过scrollview的Contentoffset的值进行时时变化的,实现原理也基本就是监听了这个属性的变化。

监听的方法有多种,可以通过kvc(推荐),也可以通过scrollviewdidscroll进行判断。

但是会有一些暴力测试,滑动过快的会出现动画卡帧,或者控件偏移的情况产生。


对kvc不了解的可以看这里:

荣芳志专栏,Objective-C语法之KVC使用:http://www.cnblogs.com/stoic/archive/2012/07/20/2601315.html



产生原因:

经过测试,平常的缓缓滑动,通过在scrollviewdidscroll方法里面打出contentoffset.y的变换,每次变化值是0.5,但是快速活动时每次的变换是不一定的,也就是在0.5-20直接变动。


bug分析:

苹果的动画渲染也是有限制的,如果快速滑动,会省略很多过渡动画,但这样也可以欺骗人眼打到过渡动画效果。

所以在制作相关动画时要做响应的预判,如动画达到某个位置已经超过动画限制范围就做出相应的预判即可。


相关代码:

#define offsety scrollView.contentOffset.y
#define endoffsety 153.0f

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.tag == 1001) {
        if ((offsety > 0)&&(offsety<153)) {
         //更加距离变化计算,改变属性的方法
            [self AnnimationWithProperty:offsety];
        }
        else if (offsety < 0){
         //更加距离变化计算,改变属性的方法
            [self AnnimationWithProperty:0];
        }
        else if ((offsety> 153)&&(_frontView.top > -153)) {
         //更加距离变化计算,改变属性的方法
            [self AnnimationWithProperty:endoffsety];
        }
    }
}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值