隐藏带有约束和动画的视图

Hiding a view with constraints and animation

我有一个 UIViewController,这是一个自定义 TabBarController。在里面我有一个 UIView 保存 UIViewController 和在底部另一个 UIView 用作 TabBar,我想用动画隐藏 TabBar 并保持约束条件。出于某种原因,每次我尝试这样做时,视图约束都会变得一团糟。

TabBar 的高度恒定为 100 点。

- UIViewController
  - viewContent (UIView, the UIViewController container)
  - viewTabBar (UIView as TabBar)

这是我的代码:

func hideTabBar() {
    UIView.animate(withDuration: 400) {
        self.contentView.frame.size.height += self.viewTabBar.frame.size.height
        self.view.layoutIfNeeded()
    }
}

帮忙?

我猜最好的方法是将标签栏高度约束设为 IBOutlet,或者以编程方式创建它,然后仅更改该约束常量值。像这样:

var tabbarHeightConstraint = NSLayoutConstraint(item: tabbarView, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .none, multiplier: 1, constant: 100)

NSLayoutConstraint.activate([tabbarHeightConstraint])

// Animating, set new tab bar height to 0
tabbarHeightConstraint.constant = 0

UIView.animate(withDuration: 400) {
  self.view.layoutIfNeeded() // Or wherever the tabbar view is in
}

现在,如果您想再次显示标签栏,只需将常量设置为 100 即可。