【问题标题】:Is there a way to change the height of a UINavigationBar in a UINavigationController Swift Xcode?有没有办法在 UINavigationController Swift Xcode 中更改 UINavigationBar 的高度?
【发布时间】:2019-08-31 03:46:00
【问题描述】:

有没有办法改变(即减小)UINavigationController 中 UINavigationBar 的高度?我尝试了以下方法无济于事:

extension UINavigationBar {

override open func sizeThatFits(_ size: CGSize) -> CGSize {
    return CGSize(width: UIScreen.main.bounds.size.width, height: 10)
    }

}

class CustomNavigationController : UINavigationController {

    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        navigationBar.frame.size.height = 10
    }

}

提前致谢!

【问题讨论】:

    标签: ios swift uinavigationcontroller uinavigationbar


    【解决方案1】:

    试试下面的代码,

    override func viewDidLayoutSubviews()
    {
       super.viewDidLayoutSubviews()
       let height = CGFloat(72)
       navigationBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: height)
    }
    

    【讨论】:

    • 谢谢!我有一个问题:UINavigationControllers 有viewWillLayoutSubviews(),但没有viewDidLayoutSubviews() 那么我应该在哪里实现上述代码块?还是我应该使用viewDidAppear
    • 你指的是这个吗?:stackoverflow.com/questions/40751366/…
    • 不,你必须在 UINavigationController 的类中编写代码
    • 我认为 viewDidLayoutSubviews() 在 iOS 11 中已被弃用(参见this
    猜你喜欢
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2010-10-28
    • 2016-03-27
    • 1970-01-01
    • 2012-08-15
    • 2017-01-21
    相关资源
    最近更新 更多