Подтвердить что ты не робот

IOS 11 вопросов с navigationBar prefersLargeTitles

Xcode 9 beta 6 iOS 11

У меня есть раскадровка для viewController, backgroundView, tableView и searchFooter view - это подвид представления. Структура выглядит следующим образом:

введите описание изображения здесь

В классе AppDelegate я устанавливаю UINavigationBar.appearance().prefersLargeTitles = true

и

UINavigationBar.appearance().setBackgroundImage(UIImage(),for: .default)

UINavigationBar.appearance().shadowImage = UIImage()

В классе viewController я установил navigationItem.searchController = searchController и navigationItem.hidesSearchBarWhenScrolling = true

Когда я запускаю приложение, я обнаружил, что shadowImage navigationBar все еще существовал. NavigationBar не станет нормальным (не предпочитает LargeTitles mode) автоматически (левый gif), когда я прокручивал таблицуView. Я надеюсь, что navigationBar может работать так же, как система app (правый gif).

мое приложение системное приложение

Странное поведение: Когда я удаляю фон imageView, он может работать так же, как и системное приложение на симуляторе.

Я не знаю, почему это случилось, интересно, как его решить? Спасибо.

4b9b3361

Ответ 1

Я сделал небольшое выражение для вашей проблемы. Вы можете достичь проекта на Github.

Прозрачный NavigationBar для iOS11

Примечание. При прокрутке вы должны использовать цвет для UINavigationBar.

Ответ 2

Учетная запись была удалена командой Stack overflow. Поэтому я использую свой другой идентификатор, чтобы прокомментировать здесь. Я сообщил об этом Apple, они попросили меня предоставить проект, и я это сделал, но не более подробные комментарии от Apple.

Ответ 3

Сделайте ограничение TableView Top в разделе NavigationController NavigationsBar, а не ViewControllers Top. Он должен работать

Ответ 4

Вы должны добавить строку ниже в viewDidLoad()

self.navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.hidesSearchBarWhenScrolling = false

ИЛИ ВЫ МОЖЕТЕ реализовать метод viewForHeaderInSection UITableViewDataSource

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
    {
            let search = UISearchController(searchResultsController: nil)
            search.searchResultsUpdater = self
            return search.searchBar
    }

Ссылка, чтобы увидеть скриншот 1 Ссылка, чтобы увидеть скриншот 2