隐藏带有约束和动画的视图
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 即可。
我有一个 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 即可。