модальная панель UINavigationController с неправильной высотой - PullRequest
2 голосов
/ 28 октября 2019

ПРИМЕЧАНИЕ : Речь идет не о новом модальном стиле презентации по умолчанию, используемом в iOS 13.

У меня странная проблема с представлением модального UINavigationController.

Рассмотрим UIViewController, который находится внутри UINavigationController:

enter image description here

Когда этот код работает на iOS 13.0:

@IBAction func btntap(_ sender: Any) {

    let errorViewController = UIViewController()
    errorViewController.view.backgroundColor = .blue
    errorViewController.title = "Erro na solicitação"

    let errorNavigation = UINavigationController()

    errorNavigation.navigationBar.barTintColor = UIColor(red: 204/255, green: 0/255, blue: 0/255, alpha: 1.0)

    errorNavigation.navigationBar.tintColor = UIColor.white
    errorNavigation.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]

    errorNavigation.setViewControllers([errorViewController], animated: false)

    errorNavigation.modalPresentationStyle = .automatic

    self.present(errorNavigation, animated: true, completion: nil)
 }

Это происходит:

enter image description here

Обратите внимание на неправильную высоту, когда мы представляем модальный экран в первый раз:

enter image description here

Я хочу продолжить использовать карточную презентацию, но мне нужно исправить эту проблему неправильной высоты при первом подарке.

Это происходит при выполнении следующих требований:

  1. Представление UIViewController находится внутри UINavigationController

  2. Представленный UIViewController имеет специальные символы в названии ("ç"," ã "и т. д.)

  3. Настоящее время animated true

Уже пробовал некоторые варианты layoutIfNeeded(), но ни один не помог.

Как я могу представить это снужная высота на первом подарке?

1 Ответ

1 голос
/ 29 октября 2019

просто замените заголовок viewcontroller на свой собственный ярлык. это взломанное решение, но оно всегда будет работать, и вам никогда не придется думать об этом снова. на самом деле я никогда не вызываю свойство title контроллеров представления, я использую только метки и устанавливаю их как titleView, чтобы я мог контролировать количество строк, субтитров, выравнивание и т. д.

    let errorViewController = UIViewController()
    errorViewController.view.backgroundColor = .blue

    let errorNavigation = UINavigationController()
    let label = UILabel()
    label.text = "Erro na solicitação"
    label.textColor = .white

    errorViewController.navigationItem.titleView = label

    errorNavigation.navigationBar.barTintColor = UIColor(red: 204/255, green: 0/255, blue: 0/255, alpha: 1.0)

    errorNavigation.navigationBar.tintColor = UIColor.white

    errorNavigation.setViewControllers([errorViewController], animated: false)

    errorNavigation.modalPresentationStyle = .automatic

    self.present(errorNavigation, animated: true, completion: nil)

о да, иОбратите внимание, что размер шрифта должен быть около 17-18 от среднего до полужирного, чтобы соответствовать системе ios по умолчанию для значения заголовка для viewController, если вы хотите соответствовать системным значениям ios

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...