Добавление вида под панелью навигации в контроллере навигации - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь добавить UIView под UINavigationBar в моем UINavigationController. Представление будет заполнять информационные сообщения (например, если у нас возникают проблемы, а контент не обновляется).

Добавление собственного представления и установка его ограничений не является проблемой, но оно перекрывает содержимое представлений, содержащихся в контроллере навигации, что нежелательно, я хочу. Как я могу установить содержимое содержимого viewcontroller, чтобы соответствовать пространству, которое занимает это новое представление?

На снимке экрана показано мое пользовательское (оранжевое) представление, перекрывающее содержимое viewController, который был помещен в контроллер навигации.

enter image description here

1 Ответ

0 голосов
/ 24 июня 2019

Попробуйте создать подкласс 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
        }
    }
}

как это использовать? в вашем ВК, где вы хотите показать / скрыть это:

(self.navigationController as? CustomNavigationController)?.animateHeight(height: 50)
...