【问题标题】:UISearchBar bookmark icon is not hiding on scrollUISearchBar 书签图标未隐藏在滚动条上
【发布时间】:2019-08-11 00:27:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios uinavigationcontroller uinavigationbar uisearchbar uisearchcontroller


    【解决方案1】:

    尽量使用clipToBounds 而不是layoutIfNeeded()

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

    【讨论】:

      【解决方案2】:

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

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

      使用此扩展获取所有嵌套子视图:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-24
        • 2017-01-06
        • 2017-05-23
        • 2011-02-22
        • 1970-01-01
        • 2021-02-14
        • 2013-05-09
        • 2012-02-27
        相关资源
        最近更新 更多