Tableview最后一行在tabbarcontroller下被截断

时间:2015-04-06 10:15:45

标签: ios objective-c uitableview interface-builder uitabbarcontroller

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

我在tabbar控制器的界面构建器中取消选中了扩展边,但没有任何变化。

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

self.edgesForExtendedLayout = UIRectEdgeNone;

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

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

4 个答案:

答案 0 :(得分:8)

在viewDidLoad方法中尝试此方法

- (void)viewDidLoad
{
    [super viewDidLoad];

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

答案 1 :(得分:1)

派对有点晚了,但对此的快速解决方案就是添加一行:

self.edgesForExtendedLayout = .None

到ViewController的ViewDidLoad

答案 2 :(得分:0)

Swift 3

我遇到了这个问题,几个小时都在寻找答案。进入故事板并取消选中" Under Bottom Bars"没有工作。我遇到了这个答案,但是当试图像Sanjay那样访问tabBar的高度时,他们仍然保持不变。我将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)
}

答案 3 :(得分:0)

这是由于TabBar默认情况下在IB中是半透明的,如果您不需要此效果,可以使用代码更改它:

override func viewDidLoad() {
  super.viewDidLoad()

  tabBarController?.tabBar.isTranslucent = false
}

或者在IB中选择tabBar并取消选中Translucent框。

相关问题