CoreAnimation变得疯狂

时间:2012-03-05 08:48:57

标签: iphone objective-c core-animation

我创建了一个UIView和一些图层。我已经将这些图层组织到superview-subview层次结构中,其根目录在UIView的图层中,添加了一些手势识别器,我试图在手势识别器的事件上操作图层的几何图形(确定设置边界和位置)。我使用隐式动画和CATransactions。没有使用明确的动画。

如果我创建持续时间= 0的CATransaction,实际结果就足够了。但是如果我将持续时间设置为0.2,我会得到一些奇怪的结果:因为事件来得不快而前一个事务有时间在下一次启动之前完成所有事情没问题(例如在点击时),但如果没有足够的时间(例如在夹点或平移上),正在调整大小的图层会开始抖动。在视觉上,它看起来像动画回滚到初始点并再次开始到新值。

我认为没有任何理由。我尝试在-[UIView layoutSubviews]中执行布局,并在手势识别器处理程序中调用setNeedsDisplay。我也试图将这个逻辑分成单独的方法,但它没有帮助。

我再一次重复说我只使用隐式动画。而我想知道的是它为什么会发生(但不是如何解决)。

任何线索?

1 个答案:

答案 0 :(得分:1)

我想,这是因为你在之前没有完成时开始新动画。 也许,你需要像

一样阻止它
[yourView.layer removeAnimationForKey:@"yourAnimationKey"];

您需要实现动画委托方法

-(void)stopAnimation:(id)sender
{
    yourView.frame = [[yourView.layer presentationLayer] frame]; // that set frame of your view to it's animation position
}