Как увеличить высоту панели навигации - PullRequest
0 голосов
/ 14 сентября 2018

1. Как увеличить высоту моей навигационной панели, как это сделала Apple для приложения iMessage:

enter image description here

2. Как они расширяют панель навигации при нажатии на titleView, чтобы выглядеть так:

enter image description here

I 'мы пытались создать заголовок большего размера, но он просто обрезается до границ высоты панели навигации по умолчанию.Как они могут этого добиться?Кроме того, мои контроллеры представления встроены в контроллер навигации программно.

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Используйте представление навигации вместо панели навигации или используйте настраиваемое представление в функции didloqd, скрыть панель навигации и показать свое настраиваемое представление

0 голосов
/ 23 марта 2019

Используйте этот класс для высоты панели навигации:

   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)


                }
            }
        }


    }
0 голосов
/ 14 сентября 2018

Не уверены, что вы только что встроили Навигацию в приложение ... или настроили это программно.

Вам нужно будет добавить свой navBar в качестве своего рода «IBOulet», а затем изменить его высоту в зависимости от функции / действия / и т. Д.

Скажите, когда нажимаете «кнопку имени»;тогда что-то похожее на "mainNavBar.heightAnchor.constant = 400" (где 400 - новая высота).

Или, если вы настроили это вручную, и у вас есть ограничение автоматического размещения на высоту вашей навигациибар, тогда вы можете настроить его как IBOutlet;и получить к нему доступ проще.

Было бы полезно, если бы вы опубликовали часть своего кода или хотя бы как вы его настроили.

...