Ответ 1
Я сделал небольшое выражение для вашей проблемы. Вы можете достичь проекта на Github.
Прозрачный NavigationBar для iOS11
Примечание. При прокрутке вы должны использовать цвет для UINavigationBar.
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
, он может работать так же, как и системное приложение на симуляторе.
Я не знаю, почему это случилось, интересно, как его решить? Спасибо.
Я сделал небольшое выражение для вашей проблемы. Вы можете достичь проекта на Github.
Прозрачный NavigationBar для iOS11
Примечание. При прокрутке вы должны использовать цвет для UINavigationBar.
Учетная запись была удалена командой Stack overflow
. Поэтому я использую свой другой идентификатор, чтобы прокомментировать здесь.
Я сообщил об этом Apple, они попросили меня предоставить проект, и я это сделал, но не более подробные комментарии от Apple.
Сделайте ограничение TableView Top в разделе NavigationController NavigationsBar, а не ViewControllers Top. Он должен работать
Вы должны добавить строку ниже в 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