0

Three20 を使用して記述された古いコード ベースに取り組んでいます (ack!)。次に、このアプリを iOS7 および iOS6 にデプロイできるようにする必要があります。

ほとんどの場合、それは機能していますが、ユーザーがタップしてビュー コントローラーを切り替えると、遷移アニメーション中にナビゲーション バーが 44 ポイントのナビゲーション バーで描画されますが、アニメーションが終了すると高さ 64 ポイントにスナップします。

だから、ビューを切り替えて...スムーズ...バター...スラム。洗って、すすいで、繰り返します。

iOS 7 の iPhone サイズのデバイスで、あるビューから別のビューに切り替えると、非常に震えます。興味深いことに、現在の ViewController の新しいインスタンスに切り替えるときではなく、あるビューから別のビューに切り替えるときにのみ発生します。

コードを表示したいのですが、表示するコードがわかりません。

ポインタがあれば幸いです (RTFM コメントは喜んで受け入れます)。今回は Google-fu に失敗しました。

ビュー階層は次のようになります: UIScreen TTNavigatorWindow UILayoutContainerView UINavigationTransitionView UIViewControllerWrapperView UIView TTTableView UITableViewWrapperView ...など...

これは、ナビゲーション バーの高さが常に 44 ポイントであると three20 が想定していたが、現在はそうではない three20 の問題ですか?

これは、ナビゲーション バーが 44 ポイントでしか作成できない Interface Builder の問題ですか?コードでこれをうまく処理する必要がありますか?

これは、ナビゲーターが最上位にあるため、定期的に高さを変更する必要があると判断された難解な iOS 7 の問題ですか?

これは、私の (明らかに貧弱な) 観察力が Apple ドキュメントに関連するビットを表示しなかったドキュメントの問題ですか?

ありがとう、

-ケン

4

1 に答える 1

1

まず第一に、Three20 を取り除くことをお勧めします。これがあなたの状況にはあまり役に立たないことは知っていますが、本当に。

しかし、私はあなたに2つのアイデアを提供したいと思います。

  • Three20 は確かにさまざまな場所でハードコーディングされたナビゲーション バーのサイズを使用していますが、これがここで説明する問題を引き起こすとは思いません。他の場所でiOS7に問題が発生することは確かです。

  • あなたの説明から、iOS7がナビゲーションバーの高さを計算する方法が問題になる可能性があるようです。three20がビューを管理する方法を何らかの形で推測する原因は、プレーンなUIKitで問題なく動作するためです。ビュー スタック全体を 1 ピクセル下に、画面の下部に向かって移動するとどうなりますか? ナビゲーションバーのサイズは変わらないと思います。それを理解するには、iOS7 がナビゲーション バーの高さを計算する方法を見てください。アニメーション全体で 64 ピクセルのナビゲーション バーが必要だと思います。その効果を得るには、アニメーションの前に表示されるビュー コントローラーのフレームを変更する方法を理解する必要があります。

このアイデアのいくつかが役立つことを願っています。

于 2013-10-28T08:12:23.750 に答える