首页 > 解决方案 > UISearchController 聚焦时动画损坏

问题描述

我在 UISearchController 动画被点击时发现了一个问题,我设法在我将附加的一个简单项目中进行复制。

基本上,当我点击 UISearchController 时,它下面的内容会在动画结束之前捕捉到 view.safeAreaLayoutGuide 的顶部。这会导致动画不那么流畅。

您可以在这个小视频中看到发生的情况: https ://streamable.com/y1tzn

我在 ViewController 中做的唯一事情是:

private lazy var text: UILabel = {
    let label = UILabel()
    label.text = "dfgh"
    label.translatesAutoresizingMaskIntoConstraints = false
    return label
}()

override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = .white
    setupSearchController()
    setupLabel()
}

 func setupSearchController() {
    let searchController = UISearchController(searchResultsController: nil)
    searchController.searchBar.placeholder = "Search for names and emails"
    navigationItem.searchController = searchController
 }

func setupLabel() {
    view.addSubview(text)
    text.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
    text.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
}

在 SceneDelegate 上:

guard let windowScene = (scene as? UIWindowScene) else { return }
    window = UIWindow(windowScene: windowScene)
    let vc = ViewController()
    let nc = UINavigationController(rootViewController: vc)
    window?.rootViewController = nc
    window?.makeKeyAndVisible()

测试项目

有人对如何解决此问题有任何想法吗?

感谢大家

编辑:添加了 Git 回购

标签: iosswiftiphoneios13ios12

解决方案


推荐阅读