ios - UISearchBar 书签图标没有隐藏在滚动条上

标签 ios uinavigationcontroller uinavigationbar uisearchbar uisearchcontroller

我的导航栏中集成了一个 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 中产生这种奇怪的外观

enter image description here

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

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

最佳答案

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

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

使用此扩展获取所有嵌套 subview :

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

但这有点 hacky,因此欢迎其他解决方案 :)

关于ios - UISearchBar 书签图标没有隐藏在滚动条上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55258600/

相关文章:

ios - UINavigationController 和 UITabBarController 子类化?

ios - 如何在swift中禁用导航 Controller 向右滑动

ios - 如果使用 popViewController 返回,NavigationBar 上的 BarButtonItem 将被强制透明

objective-c - 我必须在 iOS 的 Objective-C 中保留 block 吗?

ios - 如何通过传递地址打开 Apple Maps 行车路线

ios - 如何发布图片?

ios - 导航栏不显示

ios - 带搜索栏的导航栏 iPad Monotouch

swift - 尝试设置透明导航栏,但它显示为黑色

ios - 如何从自定义 uitableviewcell 推送到新的 View Controller