У меня возникают проблемы при использовании navigationItem.searchController
в iOS 13. Панель поиска контроллера поиска изначально закрыта, но после прокрутки представления таблицы она не свернется обратно. Он «подпрыгивает» назад, когда я пытаюсь скрыть панель.
Кроме того, панель навигации становится белой после появления панели поиска. (Панель навигации имеет собственный оттенок цвета; см. Прикрепленные снимки экрана.) Обратите внимание, что это не так в iOS <13. </p>
Является ли это ошибкой в iOS 13? Если да, то есть ли способ сохранить цвет оттенка панели навигации и скрыть панель поиска при прокрутке представления таблицы вверх?
Панель поиска, кажется, скрывается при заполнении представления таблицыс ячейками для заполнения экрана.
Ниже приведен код для моего ViewController
, который встроен в UINavigationController
:
class ViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.searchController = UISearchController(searchResultsController: nil)
}
}
Снимки экрана:
![iOS 12.2](https://i.stack.imgur.com/DUATym.png)
EDIT : мне удалось «исправить» новое поведение с помощью нового UINavigationBarAppearance
API, ноЯ до сих пор не могу получить оригинальный полупрозрачный вид навигационной панели и заставить ее свернуться.
UINavigationBar.appearance().isTranslucent = true
, похоже, не работает вместе с новым API, поэтому я просто отрегулировал цвет, чтобы соответствовать полупрозрачной версии, используяВыбор цвета.
Также, похоже, нет способа правильно свернуть панель поиска.
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?)
-> Bool
{
if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .redAdjusted // adjusted to match the translucent version
appearance.titleTextAttributes = [.foregroundColor: UIColor.white]
appearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
} else {
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().barTintColor = .red
UINavigationBar.appearance().isTranslucent = true
}
}
}