2011-06-01 77 views
3

我正在研究一個iPad應用程序,它在背景主視圖前有一個小的彈出視圖。帶動畫切換視圖UIViewAnimationTransitionCurlUp

彈出視圖顯示一張照片及其相關注意事項等,主要的觀點是一堆縮略圖的

我想要實現的操作,如向左掃/右,有一個新的彈出視圖替換彈出視圖,與動畫。

// popView is the existing pop up view to be replaced 
MyPopupViewController *newPopView = [[MyPopupViewController alloc] initWithData:...]; 
[UIView animateWithDuration:0.4 
     delay:0 
     options:UIViewAnimationOptionCurveEaseInOut 
     animations: ^{ 
        [self.view addSubView: newPopView.view]; 
        [popView removeFromSuperView]; 
        [UIView setAnimationTransition: UIViewAnimationTransitionCurlUp 
              forView:popView cache:YES]; 
     } completion:^(BOOL finished) { popView = newPopView } 
]; 
[newPopView release]; 

嗯,這是行不通的。我無法刪除動畫塊中的舊視圖,否則動畫將無法啓動。我無法在完成塊中將其刪除,因爲在動畫過程中,舊圖像在其自身下仍然可見。

我已經花了很長時間玩這些序列,但卻無法讓它工作。請幫忙。

在此先感謝。 獅子座

+0

第一:代碼「popView = newPopView」分配指針。因此[newPopView版本]也會釋放popView。第二:你的意思是「舊圖像仍然可以看到」?第三:你有沒有想過使用performSelector:withObject:afterDelay:? – dasdom 2011-06-01 10:56:03

+0

感謝您的回覆。 1)是的,但addSubView會保留新視圖; 2)在動畫期間顯示的視圖仍然是舊觀點。視圖切換實際發生在動畫完成後; 3)不,我沒有。我不需要拖延任何事情,實際上我想提出新觀點的外觀 – leo 2011-06-01 11:38:05

回答

1

我終於通過設置隱藏在動畫塊中的舊視圖來解決這個問題。動畫將顯示動畫期間的新視圖。

+0

感謝您的想法。 – 2014-12-02 20:47:33

0

這是我如何做的:它運作良好,景觀從底部的捲髮頂部

[UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionTransitionCurlUp animations:^() 
    { 
     [UIView setAnimationTransition: UIViewAnimationTransitionCurlUp 
           forView:self.welcomScreen cache:YES]; 
     [self.welcomScreen setHidden:YES]; 
    }completion:^(BOOL finished) 
    { 
     [self.welcomScreen removeFromSuperview]; 
    }];