Моя цель:
Заголовок должен быть выровнен по левому краю
Заголовок должен быть вертикально центрирован внутри панели навигации
Поведение должно быть одинаковым во всех версиях iOS
В последних версиях iOS это работает отлично — заголовок выровнен по левому краю и вертикально по центру.
Однако на старых устройствах (например, iPhone X с более старой версией iOS) заголовок по-прежнему выравнивается по левому краю, но не центрируется по вертикали (он выглядит немного ниже).
Вот код, который я использую:
Код: Выделить всё
func setUpToolBar() {
// Force inline title (left aligned)
navigationItem.largeTitleDisplayMode = .inline
navigationController?.navigationBar.prefersLargeTitles = true
let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()
if #available(iOS 26.0, *) {
appearance.largeTitleTextAttributes = [
.font: UIFont.HelveticaNeueBold(32)
]
} else {
appearance.largeTitleTextAttributes = [
.font: UIFont.HelveticaNeueBold(32)
]
}
navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.compactAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance
self.title = String.strProgress.localized
navigationItem.rightBarButtonItem = makeCircularBarButton(
imageName: "iconUpgrade",
backgroundColor: UIColor.white.withAlphaComponent(0.15),
tintColor: .black,
action: #selector(onTapUpgrade),
target: self
)
}
Последняя версия iOS: заголовок выровнен по левому краю и центрирован по вертикали (правильно)
Более старая версия iOS (iPhone X): заголовок выровнен по левому краю, но не центрирован по вертикали
Ожидаемое поведение
Заголовок должен быть центрирован по вертикали на всех версиях iOS, включая старые устройства.
Вопрос
Существует ли поддерживаемый способ последовательного центрирования заголовка панели навигации по вертикали в разных версиях iOS при использовании UINavigationBarAppearance без:
Увеличения высоты панели навигации
Использования частных API
Замены заголовка пользовательским заголовкомView
Или это ограничение UIKit это нельзя исправить в старых версиях iOS?
Подробнее здесь: https://stackoverflow.com/questions/798 ... test-ios-b
Мобильная версия