gpt4 book ai didi

ios - UISearchController.hidesNavigationBarDuringPresentation 在 iOS 11 Beta 中被 scopeButtons 忽略

转载 作者:可可西里 更新时间:2023-11-01 05:40:02 27 4
gpt4 key购买 nike

在我们的项目中我们指定

hidesNavigationBarDuringPresentation = false

在特定的 UIViewControllerUISearchController 上。 searchController 有一个范围标题数组。到目前为止,这在 iOS 10 上运行良好,但在 iOS 11 测试版中,似乎忽略了 hidesNavigationBarDuringPresentation 的错误设置并弄乱了我们的显示。为了确保这不是因为我项目中的其他因素,我创建了一个简单的测试项目,它只有一个 UITableViewController,一个 UISearchController 用另一个简单的 初始化>UITableViewController。以下代码位于主视图 Controller 的 viewDidLoad() 方法中:

    self.title = "Search Bar Scope Test"
let searchViewController = SearchViewController(style: .plain)
searchController = UISearchController(searchResultsController: searchViewController)
searchController!.searchBar.sizeToFit()
tableView.tableHeaderView = searchController!.searchBar
searchController?.hidesNavigationBarDuringPresentation = false

searchController?.searchBar.scopeButtonTitles = ["scope 1", "scope 2", "scope 3", "scope 4", "scope 5"]

当指定 scopeButtonTitles 的最后一行不存在时,导航栏不会被隐藏,搜索栏会保留在其原始位置。然而,随着该行的出现,NavigationBar 被隐藏,searchBar 加上范围按钮在 iPhone 和 iPad 上都在纵向模式下向上移动,但在横向模式下保持不变模式(即使范围按钮很多并且不能放在一行中)。

有没有人遇到过这个?这是 iOS 11 中的错误或预期行为(当然不是我们期望的行为),是否有任何解决方法?

谢谢!

最佳答案

好的,我在研究另一个相关问题时找到了问题的原因,searchBar 和 scope 按钮在 iOS 11 中没有对齐。关键是 searchController 配置方案有在 iOS 11 中发生了变化,其中 searchBar 不应再显示为 tableView 的 headerView,相反,整个 searchController 应该是 的一部分navigationItem,如下图:

if #available(iOS 11.0, *) {
self.navigationItem.searchController = searchController
// optional, but apparently due to a bug in iOS 11,
// the searchBar and the scope buttons may get too high and mis-aligned
// when the nav bar is hidden
searchController?.hidesNavigationBarDuringPresentation = false
} else {
tableView.tableHeaderView = searchController!.searchBar
}

上面的代码修复了我在 iOS 11 中与 UISearchBar 相关的一些 UI 问题,实际上在 this WWDC 2017 video 中推荐。 ,但我多么希望 Xcode 能在旧的 tableHeaderView 赋值行给我们一个警告,这会节省我和其他一些开发人员的困惑和研究时间。

关于ios - UISearchController.hidesNavigationBarDuringPresentation 在 iOS 11 Beta 中被 scopeButtons 忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46163992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com