4

ユーザーがツールバーの項目をクリックしたときにツール ビュー コントローラーを表示する描画アプリケーションを作成しています。ただし、私のベータ テスターの何人かは、ツールの口蓋が開くのが遅すぎると報告しています。標準の presentModalViewController:animated: 呼び出しを使用してツールを表示しています。高速化するために、次のようなコード ブロックでラップしてみました。

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

残念ながら、それはうまくいきません。animation:NO と指定した方がうまくいきますが、下にある描画キャンバス ビューがすぐに削除され (コントローラが表示されなくなったと見なすため)、白い背景の上でアニメーションが発生します。

アドバイスを喜んで提供する前にこれを行った人はいますか?私はそれを感謝します!

4

2 に答える 2

13

編集: 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 に設定すると、そのアニメーションはそのレイヤーの親のアニメーションと比較して 2 倍の速さで実行されます。

さらに別のオプションは、View Controller コンテインメントを使用することです。(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: を使用して、アニメーションを完全に制御できます。

于 2012-03-15T04:38:29.553 に答える
1

同様の質問がここで尋ねられます。

この手法を使用して速度を変更することもできますが、私の実験では、あなたが提案したように、空白の背景で変更します.

于 2009-06-29T05:07:33.957 に答える