Почему мое смещение прокрутки UITableView оказывается позади UISearchController при возврате к его представлению? - PullRequest
0 голосов
/ 17 октября 2019

Xcode 11.1, iOS 13.1

Мне трудно понять, почему ячейки TableView оказываются за панелью поиска.

Мои настройки:

override func viewDidLoad() {
    // Setup Eureka's UITableViewStyle to `Plain`  (like 'Contacts' app)
    // https://github.com/xmartlabs/Eureka/issues/218
    if tableView == nil {
        tableView = UITableView(frame: view.bounds, style: UITableView.Style.plain)
        tableView?.autoresizingMask = UIView.AutoresizingMask.flexibleWidth.union(.flexibleHeight)
        tableView.cellLayoutMarginsFollowReadableWidth = false
    }
    // *now* call super.
    super.viewDidLoad()

    // Add search bar
    searchController.searchResultsUpdater = self
    searchController.obscuresBackgroundDuringPresentation = false
    definesPresentationContext = true

    // Place the search bar in the navigation bar.
    self.navigationItem.searchController = self.searchController
    self.navigationItem.hidesSearchBarWhenScrolling = false
}

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 ноября 2019

После бесчисленных дополнительных испытаний на iOS 12 и 13, потому что я получал разные результаты UX, я обнаружил это: https://stackoverflow.com/a/57861125/7599

Что приводит к: (использование Snapkit )

extendedLayoutIncludesOpaqueBars = true

    self.tableView.snp.remakeConstraints { make -> Void in
        make.top.equalToSuperview()
        make.leading.equalTo(self.view.safeAreaLayoutGuide.snp.leading)
        make.trailing.equalTo(self.view.safeAreaLayoutGuide.snp.trailing)
        make.bottom.equalToSuperview()
    }
0 голосов
/ 17 октября 2019

Добавьте следующие ограничения после tableView = UITableView(frame: view.bounds, style: UITableView.Style.plain)

tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 0).isActive = true
tableView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 0).isActive = true
tableView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: 0).isActive = true
tableView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true
...