首页 > 解决方案 > 顶部安全区域约束动画

问题描述

设置

  1. 一个简单的视图控制器,在导航项中设置了 UISearchController 以在搜索栏中使用 iOS 11 的搜索功能。

  2. 任何顶部的视图都限制在SafeArea.Top

问题

当呈现搜索控制器时,导航栏会因为它的大小变化而被动画化,但是对顶部区域的约束不会跟随动画。

如果有人知道我能做什么(现在我想我唯一的选择是禁用 以hidesNavigationBarDuringPresentation完全避免动画)

请参阅下面的示例,其中我激活了慢速动画以便于理解:

在此处输入图像描述

标签: ios11uinavigationitemuisearchcontroller

解决方案


您可以使用 UIView.animate 为约束更改设置动画。由于您的约束基于视图的安全区域,因此该viewSafeAreaInsetsDidChange方法可以提醒您约束值的变化:

override func viewSafeAreaInsetsDidChange() {
    UIView.animate(withDuration: 1) {
        self.view.layoutIfNeeded()
    }
}

推荐阅读