我正在使用UISearchController在tableview的标题 View 内显示搜索栏:

...
self.searchController.hidesNavigationBarDuringPresentation = NO;
self.presentingTVC.tableView.tableHeaderView = self.searchController.searchBar;
[self.searchController.searchBar sizeToFit];
self.presentingTVC.tableView.tableHeaderView = self.searchController.searchBar;

(其中必须将tableHeaderView属性设置两次,否则标题 View 将与第一行重叠,例如a couple of answers on S.O.)

这是它的外观,处于非 Activity 状态时处于完美的位置:

搜索栏处于 Activity 状态时应仅留在原处-我不希望它向上移动以隐藏导航栏。但是它出人意料地向下动画,并在它和导航栏之间留出空白:

这是一个
video of weird search bar animation

如果仅将搜索栏与UISearchController分开使用,则它变为 Activity 状态时不会显示相同的行为。

在我的呈现 View Controller 中,我有self.definesPresentationContext = YES;self.navigationController.navigationBar.translucent = YES;,在IB中,没有任何“扩展边缘”框处于 Activity 状态(似乎都是可能的事情,这些东西可能会使阅读演示失去阅读的乐趣)。

有人知道我如何阻止搜索栏动画吗?

最佳答案

好的,所以我终于为自己找到了解决方案。尽管很有可能在代码/ Storyboard 中还有其他内容(这就是为什么这是一个很难回答的问题),但在大多数情况下,我遵循了Apple在UISearchController上的教程:(https://developer.apple.com/library/ios/samplecode/TableSearch_UISearchController/Introduction/Intro.html)

几乎我所有的代码都与它们的代码相同,但是当我在其中单击时,我无法使搜索栏不跳转。所以我要做的是在 Storyboard 中检查原始表格 View 和搜索结果表格 View 的“不透明栏下方”。那使搜索栏停止跳动。

但是最后一个问题是,结果表 View 的第一行被搜索栏隐藏了。为了解决这个问题,我在结果表 View 的self.tableView.contentInset = UIEdgeInsetsMake(kHeightOfTableViewCells, 0, 0, 0);方法中添加了viewDidLoad。瞧!

关于ios - UISearchController在表标题 View 中显示的UISearchBar处于事件状态时动画太远,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28326269/

10-11 14:01