2

我正在寫一個繪圖應用程序,當用戶點擊工具欄中的一個項目時顯示一個工具視圖控制器。但是,我的幾位測試者已經報告說,工具上齶的打開速度太慢。我使用的是標準的presentModalViewController:動畫:來電顯示的工具,我已經試過它包裹在這樣的代碼塊加快步伐:我可以增加presentModalViewController的動畫速度嗎?

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration: 0.1]; 
[self presentModalViewController:settings animated:YES]; 
[UIView commitAnimations]; 

不幸的是,這是行不通的。如果你說動畫:NO,它會更好,但底層繪圖畫布視圖立即被移除(因爲控制器認爲它不再可見),所以動畫發生在白色背景上。

以前有沒有人願意提供一些建議?我會很感激!

回答

1

有類似的問題要求here

您也可以使用此技術更改速度,但在我的實驗中,它是在空白背景下完成的,如您所建議的。

+0

感謝您的提示zpasternack - 我會檢查出來! – 2009-06-29 06:15:25

+0

看起來像這樣,就像它會得到。答案接受:-) – 2009-07-12 00:22:28

8

編輯:增加了另一個選項與控制器遏制iOS 5和更高版本。

另一種解決方法是設置圖層的時間空間。

這是通過CALayer的速度屬性完成的。爲了減緩動畫下來,可以使用:

MytransparentVCViewController *vc = [[MytransparentVCViewController alloc] initWithNibName:@"MytransparentVCViewController" bundle:nil]; 
// Makes all animations 10 times slower 
// To speed it up, set it to multiples of 1: 2 is 2 times faster, 3 is 3 times faster etc 
vc.view.layer.speed = 0.1; 
[self presentModalViewController:vc animated:YES]; 

注意,如果你的目標是要改變模式視圖控制器,你將要呈現的動畫速度在鏈接後所提出的解決方案將無法正常工作(爲例如,如果您使用UIModalTransitionStyleCoverVertical)。

圖層的速度不是絕對值,而是該圖層父級時間空間的函數(除非圖層位於圖層層次結構的根目錄中)。例如,當您將圖層的速度設置爲2時,與該圖層父級的動畫相比,其動畫運行速度會快兩倍。

另一種選擇是使用視圖控制器遏制。 (僅適用於iOS 5及更高版本)

http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW81

您可以使用UIViewController的transitionFromViewController完全控制動畫:toViewController:duration:options:animations:completion :.

相關問題