1

У меня есть Tabbarcontroller, и в первом табуляции у меня есть tableviewcontroller. Теперь последняя строка наполовину видна, остальные находятся под контроллером tabbar.Tableview последняя строка обрезана под tabbarcontroller

Я снял флажки с расширением границ в построителе интерфейса моего контроллера табуляции, но ничего не меняется.

Я также попытался это в мой контроллер Tableview:

self.edgesForExtendedLayout = UIRectEdgeNone; 

Но все-таки последняя строка наполовину под TabBar.

Кому-то идея, как я могу это решить?

ответ

8

Попробуйте внутри метода viewDidLoad

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

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

Спасибо, сейчас работает. Найти странно, что, когда вы устанавливаете его в построителе интерфейса, он не работает и в коде. – user1007522

1

Немного опоздал на вечеринку, но быстрое решение это было бы просто добавить строку:

self.edgesForExtendedLayout = .None

к вашему ViewController-х ViewDidLoad

0

Свифт 3

У меня была эта проблема, и я искал ответы часами. Переход в раскадровку и снятие флажка «Under Bottom Bars» не сработало. Я наткнулся на этот ответ, но продолжал получать нуль, пытаясь получить доступ к высоте 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) 
} 
0

Это вызвано TabBar быть полупрозрачными по умолчанию в IB, если вам не нужен этот эффект, вы можете изменить его с помощью кода:

override func viewDidLoad() { 
    super.viewDidLoad() 

    tabBarController?.tabBar.isTranslucent = false 
} 

Или в IB, выбрав ваш tabBar и снимите флажок Прозрачный.

Смежные вопросы