写真にあるように、私のテーブルビューの下部には余分なスペースがあります。
TableViewのすべての行の高さは71ptに固定されています。
私の場合、これはUITableViewの下部にデフォルトで高さ18のフッターがあるためでした。 1に設定すると、下部の余分なスペースが削除されました。
@urgentxの answer は、私が望んでいたことのほとんどを実行しましたが、そこまで到達しませんでした。私は同様の状況です(チャットアプリのUITableViewを逆さまにしています)。ただし、それらの提案はセーフエリアの動作を完全に無効にします。これは、iPhone Xなどのデバイスでは望ましくないのです。トップナビゲーションバー。
テーブルビューを反転させても安全な領域を正しく回避できるようにするために、次のことを行いました。
override func viewDidLoad() {
super.viewDidLoad()
self.automaticallyAdjustsScrollViewInsets = false
self.tableView.contentInsetAdjustmentBehavior = .never
}
その後:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
//fetch the safe area in layoutSubviews since this it's possible that they can change when the device is rotated
let safeArea = self.tableView.safeAreaInsets
//insets are **flipped** because the tableview is flipped over its Y-axis!
self.tableView.contentInset = .init(top: safeArea.bottom, left: 0, bottom: safeArea.top, right: 0)
}
これは本質的にcontentInsetAdjustmentBehavior = .automatic
動作ですが、インセットがY軸を横切って反転します。
これは、ストーリーボード(iOS 11)を通じて簡単に修正できる方法です。
[テーブルビュー]> [サイズインスペクター]> [コンテンツインセット:なし]を選択します。
チャットメッセージ画面でUITableViewを上下逆にしたときにこの問題が発生しました。
テーブルビューを反転する前は、コンテンツインセットの上部に空白スペースが残っていたため、一番上までスクロールしても、コンテンツはナビゲーションバーの邪魔になりませんでした。ひっくり返すと、はめ込みが下に移動しました。
UITableViewのサイズインスペクターで 'コンテンツインセット'をNeverに変更して、このスペースを最後に削除します。
この場合、テーブルビューの下部にスペース0をスーパービューに設定できます。
tableView.tableFooterView = UIView();
またはあなたは以下のようにすることができます、
下限値は1.0にする必要があります。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger )section {
if(section == 0) {
return 6;
} else {
return 1.0;
}
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger )section {
return 5.0;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger )section {
return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger )section {
return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
私の場合、tableViewはプログラムで作成され、スペースを消すにはtableView.estimatedRowHeight
を設定する必要がありました
同じ問題がありました。最新のXcode(11.3)と最新のiOS(13.3)iPhoneです。私は多くの答えを試しましたが、どれもうまくいきませんでした。
私のtableView
には、上、下、リーディング、およびトレイルの制約がありますが、どういうわけか最後のセルの下の下部に大きなスペースがあります。 (tableView.contentSize.height
は必要な量のほぼ2倍でした)tableView
のデータは動的ではありません。データが表示されているビューコントローラーとtableView
が非表示になっている場合の両方で表示されます。
以下のようにscrollViewのデリゲートメソッドを使用して解決しました。これにより、ユーザーがドラッグを開始すると高さが調整されます。私にとって、それはとても素晴らしい働きをします、あなたにも望みます!
// this is the best place to adjust the contentSize.height of tableView.
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
print("scrollViewWillBeginDragging():") // optional
// replace allParkingGeos.count with your data for tableView
tableView.contentSize.height = CGFloat(allParkingGeos.count) * cellHeight
}