Как использовать UINavigationBarAppearance в iOS 13
Как вы используете этот новый объект для настройки панели навигации в iOS 13? Я попробовал следующий код в Objective-C, но он работает некорректно. Он показывает только мои текстовые атрибуты заголовка, когда контроллер представления помещается или появляется в стеке навигации.
UINavigationBarAppearance *appearance = [UINavigationBarAppearance new];
appearance.titleTextAttributes = @{NSFontAttributeName: font};
Вот документация для этого объекта.https://developer.apple.com/documentation/uikit/uinavigationbarappearance?language=objc
3 ответа
Недостаточно просто создать экземпляр UINavigationBarAppearance
. Вы должны установить его наUINavigationBar
экземпляр (или его внешний вид прокси).
// Setup the nav bar appearance
UINavigationBarAppearance *appearance = [UINavigationBarAppearance new];
appearance.titleTextAttributes = @{NSFontAttributeName: font};
// Apply it to a specific nav bar
someNavBarInstance.standardAppearance = appearance;
// There are also the compactAppearance and scrollEdgeAppearance properties that can be set as needed.
Если вам нужна такая же настройка для всех панелей навигации в приложении, примените ее к UINavigationBar.appearance
прокси.
UINavigationBar.appearance.standardAppearance = appearance;
Для меня, хотя я правильно установил внешний вид для текущего UINavigationBar, он все еще не работал.
Я узнал что тебе нужно позвонить navigationBar?.setNeedsLayout()
, если вы установили обновленный внешний вид для UINavigationBar, который уже отображается.
В iOS13 вам нужно установить цвет заголовка в объекте UINavigationBarAppearance, как здесь (версия Objective C):
UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init];
appearance.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
self.navigationController.navigationBar.standardAppearance = appearance;
self.navigationController.navigationBar.scrollEdgeAppearance = appearance;