iOS - 以编程方式移动 UISearchBar

Posted

技术标签:

【中文标题】iOS - 以编程方式移动 UISearchBar【英文标题】:iOS - Move UISearchBar programmatically 【发布时间】:2015-01-19 16:57:21 【问题描述】:

我目前在普通 UIViewController 中有一个 UISearchBar。 SearchBar或多或少在UIView的中间,当我点击输入一些文字时,我的tableView与searchBar完全重叠,无法点击清除/取消按钮:我看不到搜索栏了。 当我将我的 searchBar 完全移动到我的视图顶部时,它是完美的。但我用故事板来做。我怎样才能以编程方式做同样的事情?将 SearchBar 移动到视图的顶部。

非常感谢您的帮助

【问题讨论】:

【参考方案1】:

我建议查看UISearchController (ios 8+)。来自 Apple 文档:

UISearchController 类定义了一个接口,用于管理 显示与搜索结果一致的搜索栏 控制器的内容。

可以在 here 找到 Apple 文档。

如果您坚持手动进行,您可以尝试设置 Auto Layout 约束,如下所示将 SearchBar 始终放置在 TableView 的顶部:

 [self addConstraint:[NSLayoutConstraint constraintWithItem:_searchBar
                                             attribute:NSLayoutAttributeBottom
                                             relatedBy:NSLayoutRelationEqual
                                                toItem:_myTableView
                                             attribute:NSLayoutAttributeTop
                                            multiplier:1.0
                                              constant:0.0]];

【讨论】:

我建议您了解 AL。 :) 您至少可以将它用于这一屏幕。如果您不想使用 AL,请查看UISearchController【参考方案2】:

您有 3 个选项:

    [self.view insertSubview:yourSearchBar aboveSubview:yourTableView];

    [parentView bringSubviewToFront:yourSearchBar];

    [self.view insertSubview:yourSearchBar atIndex:0];

顺便说一句 - 当您使用情节提要创建视图时,视图来回跳转会导致所有问题,因此最好以编程方式进行。

【讨论】:

您好,感谢您的帮助。但是这 3 个选项都没有将 searchBar 带到 UIView 的顶部...

以上是关于iOS - 以编程方式移动 UISearchBar的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将 UISearchBar 添加到普通 ViewController 中以编程方式添加的 UITableView

如何在 iOS 中为 UISearchBar 设置最近的搜索历史下拉列表

以编程方式将 UISearchBar 添加到 UITableView 不起作用

以编程方式为 UITableView 和 UISearchBar 设置 NSLayoutConstraints

如何以编程方式强制在 UISearchBar 中进行搜索?

如何以编程方式将 UISearchBar 添加到我的 tableView 中?