【发布时间】:2018-06-13 13:46:37
【问题描述】:
我的视图控制器视图顶部有一个带有 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)
}
这按预期显示:
当用户点击搜索栏并且导航栏被隐藏并同时拉动搜索栏时,问题就开始了:
所以搜索栏不再可见。我几乎肯定问题在于搜索栏的顶部约束被附加到顶部布局指南,而导航栏又被向上滑动的导航栏拉起。为此,我尝试在搜索栏编辑开始时删除约束,但无济于事。
我还尝试将搜索栏添加为下方集合视图的标题,这似乎在一定程度上有效,但它会产生 2 个问题:a)拉动刷新显示搜索栏上方的刷新控件和 b)在搜索栏上使用 sizeToFit 会将其宽度缩小几个像素,使其与集合视图不对齐。
你建议我如何解决这个问题?也许通过拦截 UINavigationBar 动画并更新搜索栏约束?如果是,我该怎么做?
谢谢。
【问题讨论】:
标签: ios swift uinavigationcontroller uisearchbar uisearchcontroller