1

iOS 6で、Facebookアプリのサイドメニュー左右を再現しようとしています。同じウィンドウにそれぞれのビューが追加された2つのビューコントローラーを取得しました(1つだけが他のビューに追加されました)。私のセカンダリ コントローラーは、幅が 300 ポイントの UINavigationViewController (「スライド メニュー」という名前) に埋め込まれた UITableViewController です -- フレーム : (0, 0, 300, 480)。

サイドメニューへの前後の切り替えはかなりうまく実行されていますが、ビュー(写真の緑色のもの)を押してポップすると、そのセカンダリビューに1つのトリッキーな問題があり、テーブルビューがナビゲーションバーの下に移動します20ptsまで... 深くチェックしたところ、64pts(y原点)からではなく、44ptsでのみ開始されるのは、テーブルビューのスーパービューです。

本当に興味深いのは、まったく同じコードを使用し、そのセカンダリ ビュー コントローラーのフレームを (0, 0, 300, 480) から (0, 0, 320, 480) に変更するだけで、問題が解決することです! ただし、{320, 480} のサイズが異なると、この問題が発生します...

http://d.pr/i/RNr4

ありがとう

4

2 に答える 2

0

これを試しましたか? tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

于 2013-09-03T23:15:35.073 に答える
0

その問題に何時間も取り組んだ後、私はそれを直接解決できませんでした。UIView (UIViewController によって管理される) を UIWindow に直接アタッチするのはひどい考えのようです。フレームワークがビューのサイズをチェックしていて、それが画面のサイズと等しくない場合 (つまり、「フルスクリーン」でない場合)、ビューで再レイアウトプロセスを開始するのではないかと疑っています。ここでの問題は、UIViewController にステータス バーに関する情報がない場合に似ているため、再レイアウト プロセスが何らかの形で失敗します...

とにかく、この効果を行うための正しい解決策は、1 つの UIViewController と 2 つの子ビュー コントローラーを使用することです。1 つはスライド メニュー、もう 1 つはメイン ビューです。どちらもビュー階層に正しく追加されるため、ステータス バーなどに関する正しい情報が得られます。

于 2013-09-04T13:29:11.980 に答える