我的 View Controller View 顶部有一个带有 UISearchBar 的 UISearchController。搜索栏位于 UICollectionView 上方,整个设置是通过 SnapKit 安排的。
visualEffectView.addSubview(searchBar)
searchBar.sizeToFit()
searchBar.searchBarStyle = .minimal
searchBar.snp.makeConstraints { (make) -> Void in
make.top.equalTo(topLayoutGuide.snp.bottom)
make.leading.equalTo(visualEffectView.layoutMarginsGuide.snp.leading)
make.trailing.equalTo(visualEffectView.layoutMarginsGuide.snp.trailing)
}
这按预期显示:
当用户点击搜索栏并且导航栏被隐藏并拉动搜索栏时,问题就开始了:
因此搜索栏不再可见。我几乎肯定问题是搜索栏的顶部约束附加到顶部布局指南,反过来又被向上滑动的导航栏拉起。为此,我尝试在搜索栏编辑开始时删除约束,但无济于事。
我还尝试将搜索栏添加为下面 Collection View 的标题,这似乎在一定程度上起作用,但它会产生 2 个问题:a) 拉动刷新显示搜索栏上方的刷新控件和 b)在搜索栏上使用 sizeToFit 将其宽度缩小几个像素,使其与 Collection View 不对齐。
您建议我如何解决这个问题?也许通过拦截 UINavigationBar 动画并更新搜索栏约束?如果是,我该怎么做?
谢谢。
最佳答案
我最终放弃了这种方法,而是将搜索栏放在导航 Controller 栏上。
在此之前,我将搜索栏和 Collection View 都放在一个包含 View 中,希望搜索 Controller 动画将两者都向上拉,而不会使搜索栏消失。我还尝试将搜索栏放在 ScrollView 中,因为目前唯一有效的解决方案是将搜索栏作为 Collection View 的标题。以上均未解决问题。
不过,如果其他人遇到这个问题,我会非常有兴趣找到解决方案。
关于ios - 具有自定义宽度的 UISearchBar 在 UINavigationBar 向上滑动动画期间消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48084939/