UISearchController / UINavigationBar 在 UINavigationController 中使用时显示损坏的动画
UISearchController / UINavigationBar shows broken animation when used within UINavigationController
我有这顶 NavigationController
帽子,它的 NavigationBar
启用了大标题。根 ViewController
有一个 SearchController
,并且 hidesSearchBarWhenScrolling 在 ViewController
的 NavigationItem
中设置为 True,因为我不希望 SearchBar
总是可见的。 ViewController
有一个 TableView
,当您点击其中一项时,相同 ViewController
的一个新实例将使用故事板转场推送到导航堆栈上。但是,当查看当前 ViewController
和新 ViewController
之间的过渡时,可以观察到动画看起来不正确:一旦新 ViewController
在 SearchBar
中移动,动画就会变成空的,只显示它的背景。当新的 ViewController
最终完全可见时,SearchBar
将在没有任何动画的情况下消失。
这就是我添加 SearchController
的方式(这里没什么特别的):
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = true
}
}
所以当从 "One" 导航到 "Two" 时看起来像:
UISearchController / UINavigationBar shows broken animation when used within UINavigationController
有没有办法让它看起来更漂亮?当然,在新的 ViewController
中,SearchBar
最初不应该是可见的,所以它必须以某种方式消失。但我认为旧 ViewController
上的 SearchBar
可能应该以某种方式淡出,而不是停留在那里,然后在向新 ViewController
的过渡完成时突然隐藏起来。希望我只是在这里做错了什么......
谢谢大家,祝大家圣诞快乐,
彼得
尝试在 viewWillDissappear 方法中将搜索控制器设置为 nil。
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationItem.searchController = nil
}
嗯,我终于找到了一些非常有用的东西,但在问我的问题之前我找不到:
太糟糕了,这是自 iOS 11 以来就知道的,但仍未修复。
我有这顶 NavigationController
帽子,它的 NavigationBar
启用了大标题。根 ViewController
有一个 SearchController
,并且 hidesSearchBarWhenScrolling 在 ViewController
的 NavigationItem
中设置为 True,因为我不希望 SearchBar
总是可见的。 ViewController
有一个 TableView
,当您点击其中一项时,相同 ViewController
的一个新实例将使用故事板转场推送到导航堆栈上。但是,当查看当前 ViewController
和新 ViewController
之间的过渡时,可以观察到动画看起来不正确:一旦新 ViewController
在 SearchBar
中移动,动画就会变成空的,只显示它的背景。当新的 ViewController
最终完全可见时,SearchBar
将在没有任何动画的情况下消失。
这就是我添加 SearchController
的方式(这里没什么特别的):
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = true
}
}
所以当从 "One" 导航到 "Two" 时看起来像:
UISearchController / UINavigationBar shows broken animation when used within UINavigationController
有没有办法让它看起来更漂亮?当然,在新的 ViewController
中,SearchBar
最初不应该是可见的,所以它必须以某种方式消失。但我认为旧 ViewController
上的 SearchBar
可能应该以某种方式淡出,而不是停留在那里,然后在向新 ViewController
的过渡完成时突然隐藏起来。希望我只是在这里做错了什么......
谢谢大家,祝大家圣诞快乐,
彼得
尝试在 viewWillDissappear 方法中将搜索控制器设置为 nil。
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationItem.searchController = nil
}
嗯,我终于找到了一些非常有用的东西,但在问我的问题之前我找不到:
太糟糕了,这是自 iOS 11 以来就知道的,但仍未修复。