我正在尝试在UIView
的{{1}}下添加UINavigationBar
。
该视图将用作信息消息的占位符(例如,如果我们遇到问题并且内容没有更新)。
自行添加视图并设置其约束不是问题,但是它与导航控制器中包含的视图内容重叠了,这是我不想要的。如何设置所包含的ViewController的内容以尊重此新视图所占用的空间?
屏幕截图显示了我的自定义(橙色)视图,该视图与推送到导航控制器上的viewController的内容重叠。
答案 0 :(得分:0)
尝试对UINavigationController进行子类化,然后向其中添加橙色视图的高度约束。并在需要时调用该函数
import UIKit
class CustomNavigationController: UINavigationController{
@IBOutlet weak var topViewHeight: NSLayoutConstraint!
func animateHeight(height: CGFloat){
UIView.animate(withDuration: 0.2) {
self.viewControllers.forEach{ vc in
let v = vc.view.frame
vc.view?.frame = CGRect(x: 0, y: height, width: v.width, height: v.height)
}
self.topViewHeight.constant = height
}
}
}
如何使用? 在您要显示/隐藏它的VC中:
(self.navigationController as? CustomNavigationController)?.animateHeight(height: 50)