質問

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

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

残念ながら、それはうまくいきません。「animated:NO」と指定すると、より適切に動作しますが、基礎となる描画キャンバス ビューがすぐに削除されるため (コントローラはビ​​ューが表示されなくなったと判断するため)、アニメーションは白い背景上で行われます。

これまでにこれを行ったことがあって、アドバイスを提供してくれる人はいますか?私はそれを感謝します!

役に立ちましたか?

解決

同様の質問がされた >。

また、この技術を用いて速度を変更することができますが、あなたが提案してきたように、私の実験では、それは、空白の背景の上にそうします。

他のヒント

編集: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 倍の速度で実行されます。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top