ios – 使用UIAppearance更改后更新导航栏

ios – 使用UIAppearance更改后更新导航栏,第1张

概述我目前正在使用UIAppearance代理自定义iOS应用程序的导航栏背景图像.有一个用于在两种不同模式之间切换的按钮,用于触发通知.此通知将再次使用代理将背景更改为其他图像.我的问题是,只有当我去另一个控制器并且我回到它时,这个变化才变得可见.我无法强制更新控制器中的导航栏. 我在我的MainTabBarController中试过这个: - (void) onAppChangedMode: (N 我目前正在使用UIAppearance代理自定义iOS应用程序的导航栏背景图像.有一个用于在两种不同模式之间切换的按钮,用于触发通知.此通知将再次使用代理将背景更改为其他图像.我的问题是,只有当我去另一个控制器并且我回到它时,这个变化才变得可见.我无法强制更新控制器中的导航栏.

我在我的MainTabbarController中试过这个:

- (voID) onAppChangedMode: (NSNotification*)notif {APP_MODE mode = (APP_MODE) [[notif object] integerValue];// change navigation bar appearance[[UILabel appearance] setHighlightedTextcolor:[UIcolor redcolor]];[[UINavigationbar appearance] setBackgroundImage:[UIImage imagenamed:(mode == 0 ? @"navbar.png" : @"navbar2.png")] forbarMetrics:UIbarMetricsDefault];// trying to updatefor (UIVIEwController* vc in self.vIEwControllers) {     [vc.navigationController.navigationbar setNeedsdisplay];}}

但没什么……它不起作用.任何想法如何实现它?

谢谢!

解决方法 尝试使用此代码仅更改当前导航栏的背景图像:
[self.navigationController.navigationbar setBackgroundImage:image forbarMetrics:UIbarMetricsDefault];

更改UIAppearance后使用上面的代码.这将强制更改当前控制器的导航栏.其他控制器的导航栏将由UIAppearance的更改处理.

总结

以上是内存溢出为你收集整理的ios – 使用UIAppearance更改后更新导航栏全部内容,希望文章能够帮你解决ios – 使用UIAppearance更改后更新导航栏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1102387.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存