【问题标题】:Extra space in the background of UISearchBar causing UISearchBar overlap with status barUISearchBar 背景中的额外空间导致 UISearchBar 与状态栏重叠
【发布时间】:2016-11-22 10:50:04
【问题描述】:

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

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

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

这是我的代码。

全局变量:

    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

您的任何帮助将不胜感激。我已经解决这个问题两天了。谢谢

【问题讨论】:

    标签: ios iphone swift


    【解决方案1】:

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

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

    无论如何,感谢您的关注。希望有同样问题的人能在这里受益。

    【讨论】:

      猜你喜欢
      • 2013-09-29
      • 1970-01-01
      • 2014-06-01
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多