【发布时间】:2014-08-08 10:55:30
【问题描述】:
我有两个子视图 - 滚动视图,其内容偏移量是使用父视图上的一个 (CGFloat)属性 有条件地设置的。我想对此属性的更改进行动画处理,以使动画流畅。
我遇到的问题是当我使用
[UIView animateWithDuration:...
...
animations:^{
self.property = x;
}
动画确实发生了,但是两个滚动视图是独立动画的,并且不遵循在 setter 中触发的 property 设置的规则(递归调用在一个滚动视图和另一个滚动视图上设置偏移量等) ..)。
我尝试使用自定义 CALayer,将一个属性链接到自定义视图的 property 并使用 CoreAnimation 为该属性设置动画,其中动画 keyPath 是该属性。我覆盖了
+(BOOL)needsDisplayForKey:(NSString *) key
因此,没有任何动画。 有什么方法可以为我的属性设置动画,以使结果是一个流畅的动画?
编辑:我知道这可以通过使用计时器和做一些数学运算来完成(对于动画的计时器功能的效果,例如“缓出”),但我猜可能会有更优雅的解决方案和更可重用的解决方案(使用不同的定时器功能等)。
【问题讨论】:
标签: ios objective-c uiview core-animation