【发布时间】:2016-07-21 09:27:22
【问题描述】:
有没有办法观察 UIView.animateWithDuration 的“时间进度”...来自 UIView / 或者 CA 动画的方法系列?
我正在为视图的框架设置动画,我需要了解它的进展情况。 我的想法是我可以要么
1) 使用 CAAnimation 相关的东西或
2) 观察动画属性(如帧)并自己计算每个屏幕帧。
方法 1) 结果证明是一条死胡同,检查 CAAnimations 的内部工作原理并没有告诉我什么……而且 2) 存在缺陷,因为“模型层树会立即更新,并且很难利用表示树因为当你开始的时候表现层是零。
我非常绝望,我认为连接到 CADisplayLink 会给我一个标记,然后我只是检查受动画影响但没有什么可以点击的东西。 您认为采用与动画方法在同一范围内启动的 NSTimer 方式可以吗?如果我知道动画持续时间,那么我可以自己生成进度。
【问题讨论】:
-
CADisplayLink方法很好。只需检查动画层的presentationLayer。当图层更新到其最终位置时,presentationLayer包含飞行中的图层属性。 -
你能举个具体的例子吗?
-
见stackoverflow.com/a/22727484/1271826 或stackoverflow.com/a/21659736/1271826 或stackoverflow.com/a/15367737/1271826。或者直接搜索“
presentationLayerCADisplayLink”。