【问题标题】:Adding view beneath navigation bar in navigation controller在导航控制器的导航栏下方添加视图
【发布时间】:2019-06-24 10:31:09
【问题描述】:

我正在尝试在我的UINavigationController 中的UINavigationBar 下方添加一个UIView。 该视图将用作信息消息的占位符(例如,如果我们遇到问题并且内容没有得到更新)。

添加自己的视图并设置它的约束不是问题,但它与导航控制器中包含的视图内容重叠,这不是我想要的。如何设置包含的视图控制器的内容以尊重这个新视图占用的空间?

屏幕截图显示了我的自定义(橙色)视图与被推送到导航控制器的 viewController 的内容重叠。

【问题讨论】:

  • 我的回答有什么更新吗?
  • 我不太确定你的回答是否真的是我需要的。我只需要在推送到导航堆栈的内容上方有一个静态视图。没有动画什么的。问题在于如何避免视图与内容重叠。

标签: ios swift autolayout uinavigationbar


【解决方案1】:

尝试对 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)

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 2017-01-07
    • 2014-07-14
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    相关资源
    最近更新 更多