iOS11 SearchController - 从 navigationItem 中移除 SearchBar 导致损坏 UI
iOS11 SearchController - SearchBar removal from navigationItem leaves broken UI
当我通过设置 'nil' 从 navigationItem 中删除 searchController 时。空的 space 留在原来的位置,而不是倒塌。
试过打电话,
searchController.dismiss()
navigationController.navigationItem.searchController.dismiss()
navigationItem.searchController.dismiss()
searchController.isActive = false
没有任何效果。
P.S - 使用模拟器
使用这个:
let search = UISearchController(searchResultsController: nil)
如果您要设置以下内容,请删除此行
self.navigationItem.searchController = search
您应该在删除搜索控制器后布局子视图。诀窍是你必须布局哪个超级视图的子视图:因为navigationItem
是导航堆栈的一部分,所以你应该调用layoutSubviews()
到当前navigationController
:
navigationItem.searchController = nil
navigationController?.view.setNeedsLayout()
navigationController?.view.layoutIfNeeded()
根据 Apple 文档,您不应直接调用 layoutSubviews()
。
当我通过设置 'nil' 从 navigationItem 中删除 searchController 时。空的 space 留在原来的位置,而不是倒塌。
试过打电话,
searchController.dismiss()
navigationController.navigationItem.searchController.dismiss()
navigationItem.searchController.dismiss()
searchController.isActive = false
没有任何效果。
P.S - 使用模拟器
使用这个:
let search = UISearchController(searchResultsController: nil)
如果您要设置以下内容,请删除此行
self.navigationItem.searchController = search
您应该在删除搜索控制器后布局子视图。诀窍是你必须布局哪个超级视图的子视图:因为navigationItem
是导航堆栈的一部分,所以你应该调用layoutSubviews()
到当前navigationController
:
navigationItem.searchController = nil
navigationController?.view.setNeedsLayout()
navigationController?.view.layoutIfNeeded()
根据 Apple 文档,您不应直接调用 layoutSubviews()
。