UIView使用自定义属性有条件地动画子视图

时间:2014-08-08 10:55:31

标签: ios objective-c uiview core-animation

我有两个子视图 - 在superview上使用一个(CGFloat)属性有条件地设置其内容偏移的scrollviews。我想动画对此属性的更改,以便动画流畅 我遇到的问题是当我使用

[UIView animateWithDuration:...
              ...
              animations:^{
 self.property = x;
}

动画确实发生但两个滚动视图是独立动画的,并且不遵循在setter中触发的属性设置的规则(在一个滚动视图和另一个滚动视图上设置偏移的递归调用等)。 ..)。

我尝试使用自定义CALayer,其属性'链接到自定义视图的属性,并使用CoreAnimation设置此属性的动画',其中动画keyPath是此属性'。我超越了

+(BOOL)needsDisplayForKey:(NSString *) key

结果,没有任何动画。 有没有办法如何为属性设置动画,以便结果是一个流畅的动画?

编辑:我知道这可以通过使用计时器和做一些数学(对于动画的计时器功能的效果,如'缓出')来完成,但我猜测可能有一个更优雅的解决方案,更可重复使用(使用不同的计时器功能等。)。

2 个答案:

答案 0 :(得分:0)

您的财产是什么类型或类别?您不可能使用持续时间的动画增加任何基本类型,您可能更好地使用for循环并自行递增。

答案 1 :(得分:0)

我最后使用CADisplayLink来连续更新属性值,并使用缓动函数计算更新差异,以实现缓出效果。