我正在尝试制作 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