我的导航栏中集成了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中产生了这种奇怪的外观
看起来文本字段不会剪切图标,也不会像占位符和搜索图标那样应用淡入淡出动画。
你们有没有看到我的错误?如果没有,有人可以复制这个吗?然后这是一个错误,我将提交雷达。
好吧,我通过这样做解决了这个问题:
searchController.searchBar.allSubviews.forEach { $0.clipsToBounds = true }
使用此扩展来获取所有嵌套子视图:
extension UIView {
var allSubviews: [UIView] {
return self.subviews.reduce([UIView]()) { $0 + [$1] + $1.allSubviews }
}
}
但这有点hacky所以其他解决方案是值得赞赏的:)