How to use UINavigationBarAppearance in iOS 13

最后都变了- 提交于 2020-04-18 06:51:08

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!