Вопрос:

iOS 11 большой заголовок панели навигации вместо плавного перехода

swift xcode uitableview uiviewcontroller ios11

7045 просмотра

5 ответа

547 Репутация автора

Я сталкиваюсь с проблемой, когда большая панель навигации заголовка очень резко сворачивается при прокрутке UITableView, встроенного в UIViewController. Кажется, проблема возникает только при прокрутке экрана вверх. При прокрутке вниз по экрану заголовок снова плавно переходит в большой, но не наоборот.

Эта проблема не возникает при использовании UITableViewController.

Вот нормальное, ожидаемое поведение при прокрутке внутри UITableViewController.

iOS 11 UITableView внутри UIViewController (прерывается резкий переход при прокрутке)

А вот и прерывистый, резкий переход при использовании UITableView внутри UIViewController.

iOS 11 UITableViewController (корректный переход)

Вот код для сломанной реализации:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 12
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Basic", for: indexPath)

        cell.textLabel?.text = "Title \(indexPath.row)"

        return cell
    }

}

На панели навигации установлен флажок « Предпочтительные большие заголовки», а для элемента навигации « Большой заголовок» установлено значение «Автоматический».

Код и конфигурация для обоих примеров выше одинаковы, за исключением того, что UITableViewController и UITableView внутри UIViewController.

Я также заметил, что нарушенное поведение НЕ происходит, если содержимое UITableView не превышает высоту представления. Но как только на экране появляется больше клеток, чем может поместиться, происходит сбой.

Любая идея, если я делаю что-то не так или это ошибка iOS 11?

Автор: Villarrealized Источник Размещён: 31.12.2017 12:34

Ответы (5)


34 плюса

371 Репутация автора

Решение

Я столкнулся с той же проблемой - у меня был UIViewController, встроенный в UINavigationController, у UIViewController было табличное представление с ограничениями в начале, в конце, сверху и снизу в безопасной области . Весь табличный вид вел себя нервно. Хитрость заключалась в том, чтобы изменить верхнее ограничение tableview на superview .

Здесь я записал изменение ограничения таблицы в iOS 11

Автор: Soolar Размещён: 11.01.2018 01:34

2 плюса

1723 Репутация автора

У меня была похожая проблема, и я решил ее, удалив UINavigationBar.appearance().isTranslucent = false из приложения AppDelegate.

Автор: fl034 Размещён: 28.03.2018 11:23

27 плюса

744 Репутация автора

Поместите эту строку кода на ваш UIViewController, содержащий UITableView, и он отлично работает для меня.

стриж

extendedLayoutIncludesOpaqueBars = true;

Objective-C

self.extendedLayoutIncludesOpaqueBars = YES;

Установите верхнее пространство UITableView AutoLayout в «Superview» вместо «Safe Area»

Автор: Filippo Размещён: 07.06.2018 01:18

1 плюс

31 Репутация автора

В Интерфейсном Разработчике:

  1. Выберите ваш "viewController".
  2. Атрибуты Инспектора отметки «Под непрозрачными слитками» и «Под верхними слитками».
  3. Сделайте ваши верхние ограничения вашего второго элемента scrollView «SuperView», а не «SafeArea».

Это работало со мной.

Ссылка

Автор: FarouK Размещён: 12.05.2019 02:47

0 плюса

83 Репутация автора

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

    NSLayoutConstraint.activate([
    scrollView.topAnchor.constraint(equalTo: view.topAnchor),
    scrollView.leftAnchor.constraint(equalTo: view.leftAnchor),
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
    scrollView.rightAnchor.constraint(equalTo: view.rightAnchor)
    ])

в viewDidLoad.

Оригинальный ответ: https://stackoverflow.com/a/48321447/1386369

Автор: Yongqiang Zhou Размещён: 25.07.2019 01:14
Вопросы из категории :
32x32