Ipad 使用滑入式&;滑出子视图的动画

Ipad 使用滑入式&;滑出子视图的动画,ipad,animation,uiview,subview,uiviewanimation,Ipad,Animation,Uiview,Subview,Uiviewanimation,我首先要解释的是,我已经看到了很多关于这类特性的问题和答案,但我自己在实现它时仍然遇到问题。我使用的是ARC,而不是自动布局或故事板。我使用代码中的约束定义布局,因此我一直尝试实现动画的方式有点不同。最后,这是一个iPad应用程序 对于手头的特定问题,我有一个子视图,它从隐藏开始,但在操作发生时出现。我希望此子视图使用隐藏功能,但在它出现之后和隐藏之前,将其滑入和滑出。到目前为止,我已经完成了一半,并且能够让视图毫无问题地滑入。下面是实现这一点的代码 detailView.hidden

我首先要解释的是,我已经看到了很多关于这类特性的问题和答案,但我自己在实现它时仍然遇到问题。我使用的是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;

我得到的结果是,视图就像被隐藏一样消失了,它总是这样。在添加其他动画之前,是否需要删除添加到视图中的一个动画?还是我的CATTransferM3DMakeTransformation定义不正确?

结果显示,在动画开始之前调用了detailView.hidden。我通过添加一个带有延迟的选择器来解决这个问题,该选择器包含一个隐藏视图的方法

[self performSelector:@selector(hideDetailView) withObject:nil afterDelay:.40];