13

デバイスで遅いと思われるトランジションを最適化しています。の行が選択されUIViewControllerているときに、別の行から押し出しています。UITableView行の選択後、新しいビューがプッシュされる前に、顕著な一時停止があります。

いくつかのロギングは、行の選択からプッシュされたコントローラーまで、すべてのコードがかなり高速であることを示していますviewWillAppear。ただし、viewWillAppearとの間の時間viewDidAppearは約 0.7 秒で記録されます。

遷移自体 (私は信じています) は 0.3 秒しかかからないはずです。残りの原因は何ですか?

私は iPhone 4 でテストしているので、最高のパフォーマンスは期待できません。しかし、同じデバイス上の他の同様のアプリと同じパフォーマンスに匹敵することができるはずですよね?

4

2 に答える 2

2

数週間前に同様の質問があり、見つけたことについてブログ投稿を書きました。

http://bradbambara.wordpress.com/2014/07/31/object-life-cycle-uiviewcontroller/

TL;DR バージョンでは、iOS は次のようになります。

  • 新しいシーンのレイアウトを実行します
  • 新しいシーンへのトランジションを実行します (アニメーション化されたトランジションの場合)

...私の推測では、遅延は特に長いトランジションが原因で発生するか、レイアウト コードでパフォーマンスが集中する作業を行っている場合に発生する可能性があります。

于 2014-09-17T21:04:45.490 に答える
1

遷移自体 (私は信じています) は 0.3 秒しかかからないはずです。残りの原因は何ですか?

通常、リソースは次の方法で消費されます: drawRect:layoutSubviewsviewDidLoadviewWillAppear:。また、NIB からのロードにはかなりの時間がかかる場合があります。

の後viewWillAppear:、iOS は新しい (そしておそらく現在の) ビューのスナップショットを作成し、2 つの画面間でスムーズなアニメーションを実行します。そのため、両方のコントローラー ビューの描画とレイアウト コードが十分に高速であることを確認してください。

于 2012-10-20T18:59:30.997 に答える