所以我有一个很好的在 tableview 单元格上平移的实现。我基本上使用 panGestureRecognizer 并将单元格移出屏幕,并在 tableViewCell 下方显示另一个视图。这工作正常。当我在 tableViewCell 上平移时,我基本上会在下面显示 5 个按钮。
我的目标是在 tableviewcell 移动时为 5 个按钮设置动画。例如,
| 1 | 2 | 3 | 4 | 5|
如果我正在滑动并向右移动单元格并且我是十字按钮 1,我将动画按钮弹出并对用户可见。如果我越过 2,那么 2 将动画弹出,并且对用户可见。当我在按钮 5 中时,所有按钮都已弹出并准备好进行用户操作。
我正在这样做
//Scale Animation
CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
scaleAnim.duration = 0.3;
scaleAnim.toValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
scaleAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1,0.1, 1.0)];
scaleAnim.removedOnCompletion = YES;
[view.layer addAnimation:scaleAnim forKey:nil];
**
我的目标 :
**
因此,当我处于平移手势的中间,并且我决定关闭它(向左移动)时,按钮应该会弹出,并且对用户不可用。
此外,当我移动单元格时,按钮应逐渐放大,并可供用户使用。所以我基本上需要传递单元格的原点并使用一些数学来根据按钮的原点和宽度(相当简单)计算按钮的比例。
if (CGRectIntersectsRect(button.frame, self.movingCell.frame))
{
CGFloat xScale = cellTranslation - xOriginForButton;
[self popOutAnimate:button withScale:xScale/ (xWidthForButtons + xSpaceBetweenButtons)];
}
但是当我快速移动单元格时问题出现了,视图没有得到单元格移动的所有变化,并且它们被卡在半动画状态。
我有一种感觉,我没有正确掌握逻辑。整个实现类似于Sparrow iphone 邮件应用程序。当您平移单元格时,按钮会随着单元格的移动以动画形式显示。对于那些没有使用麻雀的人。您可以在 1:25 中看到平移手势https://www.youtube.com/watch?v=XLX6XV0SbWI&t=1m25s
逻辑正确吗?我错过了什么吗?
任何帮助深表感谢。