我试着让我的UISearchbar和它下面的UITableView互相粘在一起。我试过类似的方法,但没有成功。在不同的设备模拟器中运行时,tableview只是在不同的y位置被附加。我需要以编程方式完成这项工作,因为我已经这样创建了表视图。
图像链接:https://ibb.co/T8jHLtz

func viewDidLoad(){
  recentSearchesTableView.frame = CGRect(x: 0, y: 200, width: view.frame.width, height: view.frame.height)
        recentSearchesTableView.delegate = self
        recentSearchesTableView.dataSource = self
        recentSearchesTableView.register(UITableViewCell.self, forCellReuseIdentifier: "RecentSearchCell")
        recentSearchesTableView.tag = 202
        recentSearchesTableView.isUserInteractionEnabled = true
        recentSearchesTableView.tableFooterView = UIView()
}

编辑:结果显示self.tableview.origin.y = self.searchbar.origin.y + self.searchbar.frame.height对于iPhone X及以上版本的所有设备都非常适用,但搜索栏和tableview与iphonex及以上版本重叠:/

最佳答案

将搜索栏添加到表视图的最佳方法是使用UISearchController

override func viewDidLoad() {
    super.viewDidLoad()

    // You may need this for presenting the search controller
    definesPresentationContext = true

    searchController = UISearchController(searchResultsController: nil)
    searchController.obscuresBackgroundDuringPresentation = false
    searchController.searchResultsUpdater = self
    searchController.delegate = self
    if #available(iOS 11.0, *) {
        navigationItem.searchController = searchController
//        navigationItem.hidesSearchBarWhenScrolling = false
    } else {
        tableView.tableHeaderView = searchController.searchBar
    }
}

这将使管理搜索结果的逻辑和显示更加容易。

关于ios - 如何添加约束以编程方式将两个 View 连接在一起?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54139462/

10-15 17:35