【发布时间】:2013-03-31 20:01:01
【问题描述】:
所以我有一个很好的在 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
逻辑正确吗?我错过了什么吗?
非常感谢任何帮助。
【问题讨论】:
标签: iphone objective-c xcode cocoa-touch core-animation