从本质上讲,这个问题是,UISearchBar在激活时与状态栏重叠。我知道已经发布了许多类似的问题,我已经尝试了所有方法,但是仍然无法解决。

初始化屏幕后,搜索栏似乎位于正确的位置。当我向下滚动屏幕时,可以看到搜索栏的背景比从iPhone上的邮件应用程序获得的背景要高。

ios - UISearchBar的背景中有多余的空间,导致UISearchBar与状态栏重叠-LMLPHP

搜索栏背景中多余空间的高度与状态栏高度相同。我相信这是导致以下问题的原因,即当激活搜索栏时,它与状态栏重叠。但是,取消搜索后,它会放回到正常位置,如第一张图片所示。

ios - UISearchBar的背景中有多余的空间,导致UISearchBar与状态栏重叠-LMLPHP

这是我的代码。

全局变量:

    let searchController = UISearchController(searchResultsController: nil)


在viewDidLoad中:

    self.extendedLayoutIncludesOpaqueBars = true
    self.definesPresentationContext = true
    self.navigationController?.navigationBar.isHidden = false
    self.originalFrame = self.tabBarController?.tabBar.frame
    searchController.hidesNavigationBarDuringPresentation = true
    searchController.searchBar.barTintColor = Settings.tealColor
    searchController.searchResultsUpdater = self
    searchController.dimsBackgroundDuringPresentation = false
    searchController.searchBar.scopeButtonTitles = ["All", "Pre-order", "Delivery", "Carry-out", "Dine-in", "History"]
    searchController.searchBar.delegate = self
    searchController.searchBar.sizeToFit()
    restaurantTableView.tableHeaderView = searchController.searchBar


您的任何帮助将不胜感激。我已经在这个问题上工作了两天。谢谢

最佳答案

有趣的是,在我发布问题已经花了两天时间的30分钟之后,我自己解决了这个问题。罪魁祸首是以下代码块,当我从自定义导航栏切换到内置导航栏后,我没有删除它们。

func position(for bar: UIBarPositioning) -> UIBarPosition {
    return UIBarPosition.topAttached
}


无论如何,感谢您的关注。希望遇到同样问题的人可以从中受益。

关于ios - UISearchBar的背景中有多余的空间,导致UISearchBar与状态栏重叠,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40732724/

10-10 08:17