UISearchController的搜索栏没有填充全宽



>编辑:我正在使用自动布局。

我在用UISearchController的搜索栏填充屏幕的整个宽度时遇到问题。我的设置是这样的:

  1. 我有一个UIViewController。在里面,我所有的元素都分开了。有一个UITableView显示结果。
  2. 由于我在搜索栏与状态栏重叠时遇到了问题,因此我创建了一个具有约束的普通 UIView,以便它位于状态栏下方并填充 UIViewController 的整个宽度。这是我在这里多次看到的方法。
  3. 最后,我创建UISearchController并将其添加为"wrapperView"的子视图。

结果如下:

蓝色仅用于查看容器视图延伸到的位置

对我来说,搜索栏要么没有正确填充容器,要么没有正确居中,因为左侧的一侧似乎没有另一侧那么宽。

此外,当搜索框处于活动状态时,所有内容都会显示正常,如下所示:

该表也显示正常

这是我进行设置的代码:

//Mark: - Outlets
@IBOutlet weak var wrapperView: UIView!
@IBOutlet weak var tableView: UITableView!
//Mark: - Properties
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
    /*!
    Sets the values of the searchController and it's behaviour
    */
    searchController.searchResultsUpdater = self
    searchController.dimsBackgroundDuringPresentation = false
    searchController.searchBar.delegate = self
    /*!
    Sets the values and behaviours of the tableView
    */
    tableView.delegate = self
    tableView.dataSource = self
    tableView.hidden = true
    definesPresentationContext = true
    searchController.searchBar.sizeToFit()
    searchController.searchBar.frame.size.width = self.view.frame.size.width
}

另外,我的搜索逻辑工作正常。

显然只有模拟器显示搜索栏很糟糕。我不知道这是否是模拟器的错误,但在设备上它工作正常!因此,我将这个答案标记为正确的答案,希望它能为其他人提供良好的参考!干杯!

最新更新