swiftuitableviewuitabbarcontrolleruitabbarbounds

TableView Content behind TabBar


I've searched through Stack Overflow and can't find a fix for the TableView being behind my TabBar.

I set up my TableView like this:

func setUpTableView() {
        messagesTableView.frame = view.frame
        messagesTableView.backgroundColor = .white
        view.addSubview(messagesTableView)
        messagesTableView.tableFooterView = UIView()
        messagesTableView.delegate = self
        messagesTableView.dataSource = self
        messagesTableView.register(UITableViewCell.self, forCellReuseIdentifier: messagesCellIdentifier)
        edgesForExtendedLayout = []
        extendedLayoutIncludesOpaqueBars = false
        messagesTableView.contentInsetAdjustmentBehavior = .never
    }

Then I setUpTableView() in viewDidLoad().

According to all sources

Should satisfy the content insets and not allow the TableView to scroll behind the TabBar.

Please note my TabBars' translucency is set to false inside TabBarController.

tabBar.isTranslucent = false

Adding Illustration

enter image description here

When scrolling to the bottom is not showing the complete TableView content as the TabBar covers the last few indexes.


Solution

  • Did you try this in viewDidAppear ?

      override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
        }
    

    Edit

    Remove

    messagesTableView.frame = view.frame 
    

    and add autoLayout to your messagesTableView

      messagesTableView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            messagesTableView.topAnchor.constraint(equalTo: topAnchor),
            messagesTableView.leftAnchor.constraint(equalTo: leftAnchor),
            messagesTableView.bottomAnchor.constraint(equalTo: bottomAnchor),
            messagesTableView.rightAnchor.constraint(equalTo: rightAnchor)
            ])