【问题标题】:iOS 11 search bar animation bugiOS 11 搜索栏动画错误
【发布时间】:2018-08-19 14:14:36
【问题描述】:

我有一个搜索控制器附加到具有自定义搜索栏样式(颜色)的导航项。代码如下:

    searchController = UISearchController(searchResultsController: nil)
    searchController.searchResultsUpdater = self
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.dimsBackgroundDuringPresentation = false

    let bar = searchController.searchBar
    bar.placeholder = "Search songs"
    bar.backgroundImage = .transparentPixel // transparent UIImage of size 1x1
    bar.backgroundColor = UIColor(red: 0.02, green: 0.04, blue: 0.06, alpha: 1)
    bar.tintColor = .white
    bar.barTintColor = UIColor(red: 0.02, green: 0.04, blue: 0.06, alpha: 1)
    bar.isTranslucent = false
    bar.barStyle = .default
    bar.showsCancelButton = true

    definesPresentationContext = true

然后我将它添加到控制器中:

    if #available(iOS 11.0, *) {
        controller.navigationItem.searchController = searchController
        controller.navigationItem.hidesSearchBarWhenScrolling = false
    } else {
        // Fallback on earlier versions
        tableView.tableHeaderView = searchController.searchBar
    }

当我在动画期间导航到该控制器一小段时间时,搜索栏显示白色而不是我设置的颜色。不确定这些是默认样式还是只是一种白色背景颜色。这是视频:

在调试视图层次结构的过程中,我发现了一个白色背景,不确定它是否与问题有关:


更新: Apple 官方搜索示例代码(可以找到here)也有类似问题。此外,它在搜索栏下方显示黑色区域,同时为新控制器的推送设置动画。我已将窗口的背景颜色更改为红色并改为看到红色:

就我而言,我没有白色背景的窗口或视图。了解是否有人遇到此问题以及如何解决它会很有趣。

【问题讨论】:

  • 嗨,你解决了吗?

标签: ios uinavigationcontroller uisearchbar


【解决方案1】:

我通过删除背景图像设置修复了相同的错误

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)

【讨论】:

    【解决方案2】:

    试试这个。

    self.extendedLayoutIncludesOpaqueBars = YES;
    

    我在下面找到了这个解决方案。

    iOS 11 UIRefreshControl with NavigationBar LargeTitle and SearchController disappearing

    【讨论】:

    • 解释更多你的答案
    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 2018-03-12
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多