如何增加导航栏高度

时间:2018-09-14 00:24:33

标签: ios swift uinavigationcontroller uinavigationbar

1。。如何像苹果公司为iMessage应用程序一样提高导航栏的高度:

enter image description here

2。。如何在单击titleView时使导航栏展开:

enter image description here

我尝试创建一个更大的titleView,但是它只是被裁剪到默认导航栏高度的范围。他们如何实现这一目标?另外,我的视图控制器以编程方式嵌入到导航控制器中。

3 个答案:

答案 0 :(得分:0)

不确定是否只是将Navigation嵌入到应用程序中...或以编程方式进行设置。

您需要将navBar添加为一种“ IBOulet”,然后根据功能/操作/等来修改其高度。

说“单击名称按钮”;那么类似于“ mainNavBar.heightAnchor.constant = 400”(其中400是新高度)。

或者,如果您手动设置了此设置,并且对导航栏的高度设置了自动布局限制,则可以将其设置为IBOutlet;并轻松访问。

如果您发布了一些代码,或者至少如何进行设置,这将有所帮助。

答案 1 :(得分:0)

使用导航视图代替导航栏,或在didloqd函数上使用自定义视图隐藏导航栏并显示您的自定义视图

答案 2 :(得分:0)

将此类用于导航栏高度:

   import Foundation
    import UIKit

    class NavigationBar: UINavigationBar {

        //set NavigationBar's height
        //For iphonex, I recommended to set the minimum height to 88 or higher.
        var customHeight : CGFloat = 100

        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)


            translatesAutoresizingMaskIntoConstraints = false


        }

        override func sizeThatFits(_ size: CGSize) -> CGSize {

            return CGSize(width: UIScreen.main.bounds.width, height: customHeight)

        }

        override func layoutSubviews() {
            super.layoutSubviews()

            self.tintColor = .black

            frame = CGRect(x: frame.origin.x, y:  0, width: frame.size.width, height: customHeight)

            // title position (statusbar height / 2)
            setTitleVerticalPositionAdjustment(-10, for: UIBarMetrics.default)

            for subview in self.subviews {
                var stringFromClass = NSStringFromClass(subview.classForCoder)
                if stringFromClass.contains("BarBackground") {
                    subview.frame = CGRect(x: 0, y: 0, width: self.frame.width, height: customHeight)
                    subview.backgroundColor = .yellow

                }

                stringFromClass = NSStringFromClass(subview.classForCoder)
                if stringFromClass.contains("BarContent") {

                    subview.frame = CGRect(x: subview.frame.origin.x, y: 20, width: subview.frame.width, height: customHeight - 20)


                }
            }
        }


    }