tabbarcontroller下tableview最后一行被截断

Tableview last row is cut off under tabbarcontroller

我有一个 Tabbarcontroller,在第一个 tabview 中我有一个 tableviewcontroller。现在最后一行是半可见的,其余部分位于 tabbarcontroller 下方。

我在标签栏控制器的界面生成器中取消选中扩展边缘,但没有任何变化。

我也在我的 tableview 控制器中尝试过这个:

self.edgesForExtendedLayout = UIRectEdgeNone;

但最后一行仍然在标签栏下方的一半。

有人知道我该如何解决这个问题吗?

在 viewDidLoad 方法中试试这个

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.edgesForExtendedLayout = UIRectEdgeAll;
    self.tableView.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, CGRectGetHeight(self.tabBarController.tabBar.frame), 0.0f); 
}

晚会有点晚了,但是swift解决这个问题的方法是添加一行:

self.edgesForExtendedLayout = .None

你的ViewController的ViewDidLoad

Swift 3

我遇到了这个问题,并且花了好几个小时寻找答案。进入情节提要并取消选中 "Under Bottom Bars" 没有用。我遇到了这个答案,但在尝试像 Sanjay 那样访问 tabBar 的高度时一直得到 nil 。我硬编码了 tabBar 高度,它全是肉汁。

在 viewDidLoad 中添加以下内容:

override func viewDidLoad() {
    super.viewDidLoad()

    let tabBarHeight = CGFloat(49)
    edgesForExtendedLayout = UIRectEdge.all
    tableView.contentInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: tabBarHeight, right: 0.0)
}

是IB中TabBar默认半透明造成的,如果不需要这个效果可以用代码更改:

override func viewDidLoad() {
  super.viewDidLoad()

  tabBarController?.tabBar.isTranslucent = false
}

或者在 IB 中选择您的 tabBar 并取消选中半透明框。