2 つの子で構成されるビュー コントローラーがありますUIContainerView
。そのうちの 1 つは固定幅で、もう 1 つはポートレート モードとランドスケープ モードに基づいて幅を動的に調整します。両方とも s を含みますUITableView
。
何らかの理由で、画面が縦向きで読み込まれると、正常にレンダリングされます。ただし、横向きにロードしてから縦向きに回転すると、2番目の(動的)テーブルがすべておかしくなり、実際よりも幅が広いと判断され、水平方向にスクロールする必要がなくなります。
tableView のセルはすべて適切にサイズ調整され、この「幅が広すぎる」tableView の左側にくっつきます。ただし、テーブルビューの背景をピンク色にすると、全体がこの広すぎるゾーンに広がっていることがわかります。
ここで何が起こっているのか、私は困惑しています。ビューコントローラーがロードされた向きに関係なく、自動レイアウトは同じであるべきではありませんか?
ハンドラーに幅を記録するviewDidRotate...
と、すべてが正しい幅に見えますが、それでもこの奇妙な方法でレンダリングされます。
コンテナビューを強制的に再レイアウトする方法はありますか?
更新:めちゃくちゃになっているcontentSize
のはtableViewのです。ログに記録すると、他のすべての幅は正しいですが、 contentSize.width はかなりずれています。良いニュースは、これを手動で本来あるべき状態に戻すだけで、すべてがうまく機能することです! ただし、そもそもなぜそれが起こっているのか、または私が何を間違っているのか (もしあれば) についての質問には答えません。
スクリーンショットは次のとおりです。