2012-07-30 20 views
5

我正在嘗試自定義搜索引擎,以便目標視圖控制器從頂部向下滑動。源代碼視圖控制器隱藏在自定義搜索過程中

我按照the documentation的例子寫了我的代碼。

問題是當執行segue時,源視圖控制器變黑,然後出現動畫。我怎樣才能防止源視圖控制器變黑?

(我已經嘗試實現在this answer提出的解決方案,但屏幕無論是轉型後變黑,或恢復到源視圖控制器)。

這裏是我的代碼:

-(void)perform{ 

    UIViewController *splashScreen = self.sourceViewController; 
    UIViewController *mainScreen = self.destinationViewController; 

    //Place the destination VC above the visible area   
    mainScreen.view.center = CGPointMake(mainScreen.view.center.x, 
              mainScreen.view.center.y-600); 

    //Animation to move the VC down into the visible area 
    [UIView animateWithDuration:1 
        animations:^{ 
         mainScreen.view.center = CGPointMake(mainScreen.view.center.x, [[UIScreen mainScreen] bounds].size.height/2); 
        } 
    ]; 

    [splashScreen presentModalViewController:mainScreen animated:NO]; 
} 
+0

該解決方案非常簡單。您必須在呈現新視圖控制器之前完成動畫。沒有什麼更多。 – Fattie 2016-06-21 14:25:45

回答

3

原因您的源視圖控制器似乎是隱藏的是目標視圖控制器是立即顯示。

當您編寫自定義段落時,您沒有同時有兩個視圖可用。你既可以

  • 推視圖控制器,源視圖添加到目標視圖控制器和動畫
  • 添加目標視圖到源視圖控制器和動畫,然後推視圖控制器
  • 推到在在視圖控制器之間,添加兩個視圖,動畫,推送到目標視圖控制器。

在所有上述情況下,我說推視圖控制器,你可以改爲呈現視圖控制器模態。事實上,這可能更適合用於視圖間控制器解決方案。

+0

我試過你提到的第二個選項,它工作正常。以下是代碼:https://gist.github.com/3206340 但是,您提到的三個選項中哪一個最有效? – Eric 2012-07-30 11:30:48

+0

它們之間的效率差別不大。你應該選擇一個感覺最乾淨,最容易理解和爲你維護的人。對於產品代碼,我會親自選擇第三個選項,因爲它不會在動畫過程中混淆源或目標的視圖層次結構。但這是一個品味問題。 – 2012-07-30 11:42:00

+0

@DavidRönnqvist我正在嘗試一個流行歌曲,而不是推播,但我基本上遵循選項1,而我的源視圖不是動畫。你可以看看[我的問題]中的代碼(http://stackoverflow.com/questions/13036014/view-transition-doesnt-animate-during-custom-pop-segue)? – glorifiedHacker 2012-10-23 18:23:10

相關問題