Iva*_*čin 6 uikit uisearchbar uinavigationitem uisearchcontroller ios13
在iOS 13中,行为已更改,因此默认情况下,当“导航”控制器出现时,搜索栏是可见的(UISearchController分配给时navigationItem.searchController)。某些系统应用程序显示为带有隐藏的搜索栏(您需要向下滑动才能显示它),但是我看不到任何允许此操作的特定属性。如何实现这一点-也许有一些属性或某种方法可以做到这一点?
通过实验,我发现如果您延迟将搜索控制器分配给导航项,直到viewWillLayoutSubviews或viewDidLayoutSubviews,搜索控制器会根据需要开始隐藏。但是,如果您在 iOS 12 或更早版本上执行此操作,则向下滚动时将不会显示搜索控制器。
我最终做了以下混乱的版本检查,这对我有用:
override func viewDidLoad() {
super.viewDidLoad()
searchController = /* make search controller... */
if #available(iOS 13, *) {
// Attaching the search controller at this time on iOS 13 results in the
// search bar being initially visible, so assign it later
}
else {
navigationItem.searchController = searchController
}
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
navigationItem.searchController = searchController
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
621 次 |
| 最近记录: |