iOS 11搜索栏动画错误问题

4

我有一个搜索控制器附加在带有自定义搜索栏样式(颜色)的导航项上。以下是代码:

    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
    }

当我导航到控制器时,在动画期间的短暂时间内,搜索栏显示白色而非我设定的颜色。不确定那是否是默认样式还是仅一个白色背景色。以下是视频:enter image description here。在调试视图层次结构期间,我发现了一个白色背景,不确定它是否与问题有关:enter image description hereenter image description here 更新:用于搜索的官方 Apple 示范代码(可在此处找到:here)也存在类似问题。此外,当执行推入新控制器的动画时,它会在搜索栏下方显示黑色区域。我已将窗口的背景色更改为红色,并看到红色背景色:enter image description here。在我的情况下,没有白色背景的窗口或视图。有趣的是,了解是否有人遇到过此问题以及如何解决它。

嗨,你解决了吗? - famfamfam
2个回答

1

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

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

0

3
请问您需要翻译的具体内容是什么呢? - Nicolás Alarcón Rapela

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接