2014-04-07 125 views
0

我有一個自定義故事板segue動畫,但它沒有以我想要的方式出現。我不想在視圖控制器中「擦除」,而是希望它將當前視圖控制器與旁邊的新視圖控制器「推開」。 (不像推播,更像是在照片上滑動時在照片應用中看到的效果)。有任何想法嗎?謝謝。定製故事板Segue

- (void)perform { 

UIViewController *currentViewController = self.sourceViewController; 
UIViewController *newViewController = self.destinationViewController; 


[currentViewController.view addSubview:newViewController.view]; 


newViewController.view.transform = CGAffineTransformMakeScale(0.05, 0.05); 


CGPoint originalCenter = newViewController.view.center; 

newViewController.view.center = self.originatingPoint; 

[UIView animateWithDuration:1.9 
         delay:0.0 
        options:UIViewAnimationOptionCurveEaseInOut 
       animations:^{ 

        newViewController.view.transform = CGAffineTransformMakeScale(1.0, 100.0); 
        newViewController.view.center = originalCenter; 
       } 
       completion:^(BOOL finished){ 
        [newViewController.view removeFromSuperview]; // remove from temp super view 
        [currentViewController presentViewController:newViewController animated:NO completion:NULL]; // present VC 
       }]; 
} 

+0

那麼你發佈的代碼是不是工作? – meda

+0

我建議只使用[currentViewController presentViewController:newViewController animated:YES completion:nil]; 使用UIViewAnimationOptionCurve進行自定義動畫時,它只會執行頁面滑動動畫,而不會從左向右滑動。 –

+0

@meda這個幻燈片在當前視圖控制器之上的新視圖控制器中,我想讓它將新視圖控制器和當前視圖控制器推出。 – user3186310

回答

1
animations:^{ 
    newViewController.view.transform = CGAffineTransformMakeScale(1.0, 100.0); 
    newViewController.view.center = originalCenter; 
} 

它看起來像你不是動畫當前視圖控制器的視圖。我也不確定爲什麼要設置新視圖控制器視圖的轉換。我期望你的代碼看起來是這樣的:

CGPoint originalCenter = currentViewController.view.center; 
CGPoint newCurrentVCCenter = CGPointMake(currentViewController.view.center.x - screenWidth, currentViewController.center.y); 
[UIView animateWithDuration:1.9 
        delay:0.0 
       options:UIViewAnimationOptionCurveEaseInOut 
animations:^{ 
    currentViewController.center = newCurrentVCCenter; 
    newViewController.view.center = originalCenter; 
} 
completion:^(BOOL finished){ 
    // clean up here 
}]; 

換句話說,你正在移動currentViewController.viewnewViewController.view,因此,目前看來,新觀點都左移相同量,並在同一時間。

+0

我在哪裏放置動畫塊? – user3186310

+0

你現在擁有它的地方。我只是拿了你的代碼片段。請注意,您可能需要稍微調整一下 - 例如,您需要提供'screenWidth'的定義。我的主要觀點是,你希望兩個視圖都會一起滑動,但你的動畫塊只能移動其中一個視圖。 – Caleb

+0

那麼第二個動畫塊呢?謝謝。 – user3186310