2017-09-15 18 views
8

アプリが複数のセクションに分かれていて、セクションごとにいくつかの行が展開されていて、折りたたまれていない場合はありません。各セクションにはセクションヘッダーがあり、UITableViewHeaderFooterViewなどのサブクラスを使用してそれらを再利用していました。 iOSの11で続いてiOS 11 Floating TableView Header

Screenshot describing the issue

私は視覚的なデバッガを使用し、それが私のセクションヘッダ浮動です確認しました。ヘッダーの下にあるすべての行が正しく表示され、他のヘッダーは正常に表示されます。

健全性を回復するために、ヘッダーの再利用ロジックをすべて取り除き、プログラマチックに作成しました。同じ同じ。すべてのiOS 11以前の作業は、iOS 11でまだ浮動しています。浮動小節は毎回変わるようです。

アイデア?

+0

拡張契約ロジックを無効にすると問題は解決しますか? –

答えて

0

ストーリーボードのヘッダーを追加しましたか?「はい」の場合は「ストーリーボードのテーブルビューのヘッダー」を共有してください。
また、行の高さを計算していますか?期待どおりの計算ですか?

+0

元々XIBから読み込んだ後、プログラムで作成しました。両方とも問題を引き起こします。高さに関しては、私は推定高さ&&UITableViewAutomaticDimension'制約によって算出されます – VDub19

1

テーブルスタイルをプレーンからグループに変更してみます。

+0

面白いです。これは視覚的なバグを修正したようですが、他にもいくつか問題が残っています(グループ化されたtableView - フッターの高さ、背景色、わずかに変更されたアニメーションに関連しています)。プレーンなテーブルビューに何が影響しているのでしょうか?表面上、これは大きな問題を避けるために不必要な変更のように思えます。 – VDub19

35

ちょうど同様の問題に遭遇し、私のために働いthe discussion on this issueが見つかりました:

self.tableView.estimatedRowHeight = 0; 
self.tableView.estimatedSectionHeaderHeight = 0; 
self.tableView.estimatedSectionFooterHeight = 0; 

は、推定高さを使用するiOSの11で変更UITableViewのデフォルトの動作のように思えます。

テーブルビューでは、デフォルトで推定高さが使用されるようになりました。これは、デフォルトでセルとセクションのヘッダー/フッタービューがセルフサイズになることを意味します。 estimatedRowHeight、estimatedSectionHeaderHeight、およびestimatedSectionFooterHeightプロパティのデフォルト値は、UITableViewAutomaticDimensionになりました。これは、テーブルビューが使用する推定高さを選択することを意味します。可能であれば、実際の高さの平均値を推測するために、各プロパティについてより正確な見積もりを提供する必要があります。 iOS 11 SDKを使用してアプリケーションをビルドするときに別の動作をするテーブルビューコードがあり、セルフサイジングを採用したくない場合は、各推定高さプロパティ。 (30197915)

また、ベータ2リリースノートmirrored hereも参照してください。

私の場合には、@ahmedre答えはあなたも働いていない0にすべての推定プロパティを設定するのであれば、私の答えはおそらくあなたを助ける...

が動作していない理由を私は知らない

+0

高さが正しく表示されるため、行の高さに関係しているかどうかはわかりません(行自体が正しく配置されていない)。提案された変更をちょうどゼロにすることは、たくさんの行からです。 – VDub19

+0

これらをゼロに戻すと、問題が解決しました。ありがとうございます! – amleszk

+0

行の高さ( 'self.tableView.estimatedRowHeight = 0;')を設定する必要はなく、 'estimatedSectionHeaderHeight'と' estimatedSectionFooterHeight'を設定するだけです。 – Itachi

1

func tableView(_ tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat { 
    return 0.1 
} 

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    return 0.1 
} 
+0

作品! 0うまくいきませんでした。 – DaNLtR