首页 > 解决方案 > UISearchBar 书签图标未隐藏在滚动条上

问题描述

UISearchBar在导航栏中集成了以下代码:

// not needed because it's default
navigationItem.hidesSearchBarWhenScrolling = true

self.navigationItem.searchController = searchController

我还添加了一个自定义书签图标,如下所示:

searchController.searchBar.setImage(icon, for: .bookmark, state: .normal)
searchController.searchBar.showsBookmarkButton = true
searchController.searchBar.layoutIfNeeded()

这会在 iOS 11.4 和 12.1.4 中产生这种奇怪的外观

在此处输入图像描述

似乎文本字段没有剪辑图标,也没有像占位符和搜索图标那样应用淡入淡出动画。

你们看到我这边有什么错误吗?如果没有,有人可以重现吗?然后这是一个错误,我将提交雷达。

标签: iosuinavigationcontrolleruinavigationbaruisearchbaruisearchcontroller

解决方案


好的,我通过这样做解决了这个问题:

searchController.searchBar.allSubviews.forEach { $0.clipsToBounds = true }

使用这个扩展来获取所有嵌套的子视图:

extension UIView {
    var allSubviews: [UIView] {
        return self.subviews.reduce([UIView]()) { $0 + [$1] + $1.allSubviews }
    }
}

但这有点老套,所以其他解决方案值得赞赏:)


推荐阅读