问题
How do you use this new object to customize the navigation bar in iOS 13? I tried the following code in Objective-C but it's not working correctly. It only shows my title text attributes while a view controller is being pushed or popped on to the navigation stack.
UINavigationBarAppearance *appearance = [UINavigationBarAppearance new];
appearance.titleTextAttributes = @{NSFontAttributeName: font};
Here is the documentation for this object. https://developer.apple.com/documentation/uikit/uinavigationbarappearance?language=objc
回答1:
It isn't enough to just create an instance of UINavigationBarAppearance
. You have to actually set it on a UINavigationBar
instance (or its appearance proxy).
// 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.
If you want this same customization on all nav bars in the app, apply it to the UINavigationBar.appearance
proxy.
UINavigationBar.appearance.standardAppearance = appearance;
回答2:
in iOS13 you need to set the title color on the UINavigationBarAppearance object like here (Objective C version):
UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init];
appearance.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
self.navigationController.navigationBar.standardAppearance = appearance;
self.navigationController.navigationBar.scrollEdgeAppearance = appearance;
来源:https://stackoverflow.com/questions/58102134/how-to-use-uinavigationbarappearance-in-ios-13