9

ストーリーボードと自動レイアウトを活用する iOS 6 を対象としたプロジェクトに取り組んでいます。ストーリーボードには、UITableView がサブビューとしてビュー コントローラー ビューに追加される場所が多数あります。このテーブル ビューは、ストーリーボードのプロトタイプ セルを使用します。

私たちが直面している問題は、ビュー コントローラーが最初に横向きで読み込まれ、デバイスが縦向きに回転された場合、テーブル ビューが垂直方向と水平方向の両方にスクロールし始めることです。テーブル ビューのセルは正しい寸法で描画されますが、右側に空白が追加されます。

テーブル ビューのフレームと境界が回転時に正しいサイズに更新されている間、テーブル ビューのコンテンツ サイズは更新されていないようです。更新ローテーションの変更に関係なく、コンテンツ サイズは同じサイズのままです。

プログラムによるテーブル ビュー セルが使用されている場合、この問題は発生しません。1.) reloadData または reloadRowsAtIndexPaths:withRowAnimation を呼び出す: 2.) プロパティ contentSize を手動で設定する。

これらはどちらも理想的とは言えません。

このリンクを、この問題を示す単純なサンプル プロジェクトに追加しまし た。加えられた唯一の変更は、ストーリーボードとメイン ビュー コントローラーの実装です。

回転前 回転 回転前回転後

4

7 に答える 7

0

UI 要素と autoLayout を含むカスタム セルを使用している場合、UIScrollView のコンテンツ サイズに問題があるようです。

カスタムUITableViewCellsのAutoLayoutをオフにして、データの更新時に一番下までスクロールできるようにし、[self.tableView reloadData]をオフにする必要がありました。

AutoLayout をオンにすると、tableView.contentSize が更新されましたが、デバイスを回転させない限り、下までスクロールできませんでした。

于 2013-08-22T05:37:26.287 に答える
0

私のプロジェクトで修正した同じ問題。これはストーリーボードのバグだと思います。

次に、設定して willAutorotate メソッドで手動コーディングすることで解決しました

tableview.contentsize = CGSizeMake(tableview.width, tableview.contentsize.height);

これがあなたにとってもうまくいくことを願っています。

同じことに関するアップルのドキュメントを見つけたら、私も更新してください。それまでは、同じソリューションを使用できます。

于 2013-06-21T04:55:28.093 に答える