ios - UISearchBar 背景中的额外空间导致 UISearchBar 与状态栏重叠

标签 ios iphone swift

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

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

When screen is scrolled down a bit

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

Search bar overlaps with status bar when activated.

这是我的代码。

全局变量:

    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/

相关文章:

iphone - 声明基本类型属性

iphone - 使用带有 loadHTMLString/loadData 的 UIWebView 会破坏后退和前进按钮,解决方法吗?

ios - 如何将(子项目)框架链接到 pod?

ios - iMessage 扩展 : Callback when switching view (compact/enlarge)

ios - dispatch syn 如何导致死锁? ios

ios - 扩展 FQuery 中的 child 数量

ios - 如何创建有限的 CIImage?

ios - 'UITableView' 没有可见的@interface 声明选择器 'setShowsUserLocation:'

iphone - 比较两个 NSDate 并忽略时间分量

ios NSURLSession JSON 在 swift 中解析为 nil(在 obj-c 中正常)