【发布时间】:2013-11-12 21:25:11
【问题描述】:
我正在尝试制作 2 个同时开始并使用相同曲线的核心动画,但如果满足条件,则需要停止其中一个。例如。我在左边有以下视图,想过渡到右边。
红色视图可以被视为黄色视图之上的叠加层,即使一开始它们并不相交。想象一下点击“第 3 项”。我需要做的是将所有行移动到顶部的动画距离-item3.frame.origin.y 但是一旦title3 到达屏幕顶部,它应该保持在那里,所以剩余的item1 item2 看起来就像他们在后面滑动title3
我尝试使用带有选项的核心动画为所有元素设置动画:UIViewAnimationsOptionLayoutSubviews,然后在layoutSubview 中使用以下代码停止动画:
-(void)layoutSubviews {
CALayer* presentationLayer = (CALayer*)[self.title3.layer presentationLayer];
if (presentationLayer.frame.origin.y <= 0) {
[self.title3.layer removeAllAnimations];
}
}
但没有任何成功。有没有办法让它使用核心动画而不用 CADisplayLink 模拟。我不能使用两个单独的动画,因为很难计算 title3 动画的持续时间,如果动画曲线不是线性的,这会在 title3 和 title2 之间产生间隙。
【问题讨论】:
标签: ios iphone animation core-animation