我的桌面视图底部有一个额外的空间,如图所示:
tableView中的所有行都具有71pt的固定高度。
答案 0 :(得分:30)
答案 1 :(得分:2)
在我的情况下,这是由于UITableView底部默认的页脚高度为18。将其设置为1会删除底部的额外空间。
答案 2 :(得分:1)
当我将UITableView翻转为聊天消息屏幕时,我遇到了这个问题。
在我翻转表格视图之前,内容插入在顶部留下了一个空白区域,这样当我们一直向上滚动时,导航栏就不会阻挡内容。翻转后,插页移到了底部。
在UITableView的Size Inspector中将'Content Insets'更改为Never,以便最后摆脱这个空间。
答案 3 :(得分:1)
在我的情况下,tableView是通过编程方式创建的,因此我必须设置tableView.estimatedRowHeight
才能使空间消失
答案 4 :(得分:1)
在这种情况下,您可以将tableview的底部空间0赋予其superview,我认为它可以工作,或者您可以这样做,
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)];
}
答案 5 :(得分:0)
这是通过Storyboard(iOS 11)轻松修复的方法:
选择表格视图>尺寸检验员>内容插入:从不
答案 6 :(得分:0)
答案 7 :(得分:0)
@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轴翻转。
答案 8 :(得分:0)
如果是iOS 11和Xcode 9,则已被接受的解决方案不再是正确的解决方案。要实现类似效果,您必须转到Size Inspector,您可以在其中找到此解决方案:
您可以在代码中实现相同的目的
if #available(iOS 11.0, *) {
scrollView.contentInsetAdjustmentBehavior = .never
} else {
automaticallyAdjustsScrollViewInsets = false
}
答案 9 :(得分:0)
我遇到了同样的问题,使用最新的Xcode(11.3)和最新的iOS(13.3)iPhone。我尝试了许多答案,但没有一个奏效。
我的tableView
具有顶部,底部,前导和尾部约束,但在最后一个单元格下方的底部存在较大的空间。 (tableView.contentSize.height
几乎是所需数据的两倍)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
}
答案 10 :(得分:0)
我的问题无法通过答案解决。
我有一个UISearchbar
作为tableHeaderView
,引起空白(我不知道为什么)。我从情节提要的表视图中删除了搜索栏,并在表头的viewWillLayoutSubviews
中添加了问题,然后解决了问题。
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
tableView.tableHeaderView = searchBar
}