【问题标题】:UISearchBar with custom width disappears during UINavigationBar slide up animation具有自定义宽度的 UISearchBar 在 UINavigationBar 向上滑动动画期间消失
【发布时间】: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


    【解决方案1】:

    我最终放弃了这种方法,而是将搜索栏放在导航控制器栏上。

    在此之前,我将搜索栏和集合视图都放在了一个包含视图中,希望搜索控制器动画将两者都向上拉而不使搜索栏消失。我还尝试将搜索栏放在滚动视图中,因为迄今为止唯一可行的解​​决方案是将搜索栏作为集合视图的标题。以上都没有解决问题。

    不过,如果其他人遇到这个问题,我会非常有兴趣找到解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      • 2011-06-20
      相关资源
      最近更新 更多