При переходе от Большой титульной страницы к маленькой Титульной странице появляется пробел в навигации - PullRequest
0 голосов
/ 21 февраля 2019

Пробел в навигации появляется при переходе от большой титульной страницы к маленькой титульной странице!enter image description here

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Макет представления начинается с нижней части панели навигации.При переходе от большой титульной страницы к маленькой титульной странице панель навигации становится короче, а затем появляется пробел в навигации.

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

На макет могут влиять два свойства: полупрозрачный и dgeForExtendedLayout .Для свойства полупрозрачности следует установить значение YES или удалить его везде (по умолчанию установлено значение YES).Для свойстваdgeForExtendedLayout должно быть установлено значение UIRectEdgeAll или его необходимо удалить везде (значение по умолчанию - UIRectEdgeAll).

Для страницы UITableViewController оно будет автоматически адаптироваться к панели навигации ( selectedContentInset табличного представления изменится,предпосылка установлена ​​ contentInsetAdjustmentBehavior в UIScrollViewContentInsetAdjustmentAutomatic или удалить настройку), любой другой код не должен изменяться.

Для UIViewController подпункты основного представления должнынастроить его расположение в нижней части панели навигации.Пример кода, например,

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.searchBgTopLayoutConstraint.constant = NORMAL_STATUS_AND_NAV_BAR_HEIGHT;
    #top constraint of the top most view
}

Если первое представление ( A ) подпредставлений наследуется от UIScrollView, а большой заголовок изменится в соответствии с A свиток.Подробности можно найти в Уменьшить большой заголовок при прокрутке (не UITableViewController) iOS 11 .

Если самый верхний вид наследует от UIScrollView, например mainTableView , вы можетеустановите начало макета с нулевой точки и установите contentInset в нижней части панели навигации.Он выглядит как UITableViewController, и панель навигации изменяется при прокрутке mainsTableView без пробелов.Пример кода, например,

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.mainTableView.contentInset = UIEdgeInsetsMake(NORMAL_STATUS_AND_NAV_BAR_HEIGHT, 0, 0, 0);
}
0 голосов
/ 21 февраля 2019

Убедитесь, что вам просто нужно проверить Прозрачный , выбранный из раскадровки.

enter image description here

Установить в коде, подобном этому

override func viewWillAppear(_ animated: Bool) {
    if #available(iOS 11.0, *) {
        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationController?.navigationItem.largeTitleDisplayMode = .automatic // Change Display Mode
    }else{
        // Fallback on earlier versions
    }
}

Outout:

enter image description here

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