2013-08-20 42 views
0

我將首先解釋我已經看到了有關這種類型的功能的許多問題和答案,但我仍然有問題自己實現它。我正在使用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定義錯誤?

回答

0

變成detailView.hidden在動畫開始之前被調用。我通過添加一個延遲選擇器來解決這個問題,該選擇器包含一個隱藏我的視圖的方法。

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