博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
滑动scrollview时,随距离改变属性的动画原理!(类似陌陌,网易,path个人属性界面的动画效果)...
阅读量:6471 次
发布时间:2019-06-23

本文共 1081 字,大约阅读时间需要 3 分钟。

hot3.png

遇到的问题:

有些动画效果是通过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];        }    }}

转载于:https://my.oschina.net/CrazyPeter/blog/392743

你可能感兴趣的文章
[Processing]点到线段的最小距离
查看>>
GitHub使用教程、注册与安装
查看>>
<<The C Programming Language>>讀書筆記
查看>>
git代码冲突
查看>>
解析查询 queryString 请求参数的函数
查看>>
学生选课系统数据存文件
查看>>
git bash 风格调整
查看>>
linux操作系统加固软件,系统安全:教你Linux操作系统的安全加固
查看>>
linux中yum源安装dhcp,24.Linux系统下动态网络源部署方法(dhcpd)
查看>>
C#技术------垃圾回收机制(GC)
查看>>
漫谈并发编程(三):共享受限资源
查看>>
【转】github如何删除一个仓库
查看>>
HDOJ-1010 Tempter of the Bone
查看>>
JavaNIO基础02-缓存区基础
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
cobbler初探------实现自动安装centos6.4
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
jeesite 框架搭建与配置
查看>>
Adb移植(一)简单分析
查看>>