我将首先解释说我已经看到了很多关于此类功能的问题和答案,但我自己在实现它时仍然遇到问题。我正在使用 ARC,并且没有使用自动布局或情节提要。我在代码中使用约束来定义布局,所以我尝试实现动画的方式有点不同。最后,这是一个 iPad 应用程序。
对于手头的具体问题,我有一个子视图,它一开始是隐藏的,但在发生动作时会出现。我希望这个子视图使用隐藏功能,但在它出现之后和隐藏之前滑入和滑出。到目前为止,我已经完成了一半,并且能够毫无问题地让视图滑入。下面是完成此操作的代码。
detailView.hidden = NO;
// Perform Animation - Slide In
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
animation.duration = kAnimationTimeout;
animation.removedOnCompletion = NO;
animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(800.0, 0.0, 1.0)];
[detailView.layer addAnimation:animation forKey:nil];
但是,我试图让视图在隐藏之前滑出,但没有成功。下面是我为尝试完成此功能而添加的代码。
// Perform Animation - Slide Out
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
animation.duration = kAnimationTimeout;
animation.removedOnCompletion = NO;
animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(-800.0, 0.0, 1.0)];
[detailView.layer addAnimation:animation forKey:nil];
detailView.hidden = YES;
我得到的结果是视图就像它被隐藏一样消失了,它总是这样做的。在添加不同的动画之前,是否需要删除添加到视图中的一个动画?还是我的 CATransform3DMakeTranslation 定义不正确?