UISearchBar 在 UINavigationBar 后面扩展

Posted

技术标签:

【中文标题】UISearchBar 在 UINavigationBar 后面扩展【英文标题】:UISearchBar extends behind UINavigationBar 【发布时间】:2017-09-14 12:36:27 【问题描述】:

为什么这个 UISearchBar 将它的背景延伸到导航栏的后面?它只在我的项目中的一个视图控制器上使用 38 个视图控制器。但是这个视图控制器中的设置与其他所有设置相比并不特别。

我问的原因是因为这会在 ios 11 上造成问题。然后搜索栏不再居中。我已经重新创建了整个故事板,但效果仍然会再次发生。所以我认为这是我在视图控制器中执行的一些代码。但我不知道是什么原因造成的。谢谢。

编辑:根据要求,这里是自动布局约束:

所有常量都是0,当然除了高度。

【问题讨论】:

请显示您在搜索栏和导航栏之间提供了哪些自动布局约束。 给你,谢谢。 能否请您扩展“对齐顶部到:安全区域”的约束 我已经添加了。如您所见 - 没什么特别的。 【参考方案1】:

我遇到了同样的问题,我通过将搜索栏放到 UIView 中解决了这个问题,然后在 UIView 上应用了约束。

【讨论】:

不,这不是问题所在。我找到了答案并发布了它。不过谢谢。【参考方案2】:

我刚刚发现了问题。这个视图控制器中有一些古老的代码:

extension MyViewController : UINavigationBarDelegate 
    func position(for bar: UIBarPositioning) -> UIBarPosition 
        return UIBarPosition.topAttached
    

删除此代码修复了所有问题。

【讨论】:

谢谢!值得注意的是,这是 iOS 10 和 11 之间的行为变化。

以上是关于UISearchBar 在 UINavigationBar 后面扩展的主要内容,如果未能解决你的问题,请参考以下文章

单击 UISearchBar 的取消按钮后,如何使用 UISearchBar 刷新我的 UITableView?

UIWebView 和 UISearchBar 用于搜索

在 UISearchBar 中设置取消按钮的样式

UISearchbar 问题

UITableViewController 中的 UISearchBar?

在 UITableView 中激活时调整 UISearchBar