2

2 つの子で構成されるビュー コントローラーがありますUIContainerView。そのうちの 1 つは固定幅で、もう 1 つはポートレート モードとランドスケープ モードに基づいて幅を動的に調整します。両方とも s を含みますUITableView

何らかの理由で、画面が縦向きで読み込まれると、正常にレンダリングされます。ただし、横向きにロードしてから縦向きに回転すると、2番目の(動的)テーブルがすべておかしくなり、実際よりも幅が広いと判断され、水平方向にスクロールする必要がなくなります

tableView のセルはすべて適切にサイズ調整され、この「幅が広すぎる」tableView の左側にくっつきます。ただし、テーブルビューの背景をピンク色にすると、全体がこの広すぎるゾーンに広がっていることがわかります。

ここで何が起こっているのか、私は困惑しています。ビューコントローラーがロードされた向きに関係なく、自動レイアウトは同じであるべきではありませんか?

ハンドラーに幅を記録するviewDidRotate...と、すべてが正しい幅に見えますが、それでもこの奇妙な方法でレンダリングされます。

コンテナビューを強制的に再レイアウトする方法はありますか?

更新:めちゃくちゃになっているcontentSizeのはtableViewのです。ログに記録すると、他のすべての幅は正しいですが、 contentSize.width はかなりずれています。良いニュースは、これを手動で本来あるべき状態に戻すだけで、すべてがうまく機能することです! ただし、そもそもなぜそれが起こっているのか、または私が何を間違っているのか (もしあれば) についての質問には答えません。

スクリーンショットは次のとおりです。

ここに画像の説明を入力

4

1 に答える 1