SearchBar 处于活动状态时会超出 UINavigationItem 框架
Posted
技术标签:
【中文标题】SearchBar 处于活动状态时会超出 UINavigationItem 框架【英文标题】:SearchBar goes out of UINavigationItem frame when it is active 【发布时间】:2017-11-01 06:54:48 【问题描述】:我将searchController
的searchBar
放在navigationItem
中作为titleView
如下:
self.navigationItem.titleView = self.searchController.searchBar;
虽然它在未选中时非常适合(取消项目未显示),但如果它成为第一响应者并且取消项目出现在searchBar
旁边,它会稍微滑到navigationItem
下方。你可以看到下面的结果:
我该如何解决这个问题?有解决办法吗?
【问题讨论】:
【参考方案1】:您应该使用self.navigationItem.searchController
而不是self.navigationItem.titleView
。
self.navigationItem.searchController = self.searchController;
在此处了解更多信息https://developer.apple.com/documentation/uikit/uinavigationitem/2897305-searchcontroller
【讨论】:
它只适用于 ios 11 它在导航栏下创建一个新行并在那里显示搜索栏。我必须在一行中显示退出和取消项目之间的 searchBar,如图所示。 你是否尝试添加 self.definesPresentationContext = YES; 还有一个,你可以试试我在这个问题上的回答***.com/questions/46940042/… @trungduc self.definesPresentationContext 不影响 searchBar 的位置。【参考方案2】:使用下面的代码
if #available(iOS 11.0, *)
navigationItem.searchController = searchController
else
// Fallback on earlier versions
navigationItem.titleView = searchController?.searchBar
【讨论】:
请看我为 trungduc 写的评论。以上是关于SearchBar 处于活动状态时会超出 UINavigationItem 框架的主要内容,如果未能解决你的问题,请参考以下文章
当 UISearchController 的 searchBar 处于活动状态时,点击 UITableView 索引 (A...Z)
在搜索栏处于活动状态时删除表格视图中的单元格 - CoreData 错误
如果背景音频处于活动状态,MPMoviePlayerController 将冻结
使用 didSelectRowAtIndexPath 进行转场