gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:26:25 25 4
gpt4 key购买 nike

我目前正在使用 UIAppearance 代理自定义我的 iOS 应用程序的导航栏背景图像。有一个用于在触发通知的两种不同模式之间切换的按钮。此通知将再次使用代理将背景更改为不同的图像。我的问题是,只有当我转到另一个 Controller 并返回时,此更改才会可见。我无法强制更新 Controller 内的导航栏。

我已经在我的 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 update
for (UIViewController* vc in self.viewControllers) {
[vc.navigationController.navigationBar setNeedsDisplay];
}

}

但什么都没有……它不工作。知道如何实现它吗?

谢谢!

最佳答案

只需从窗口中删除 View 并再次添加它们:

for (UIWindow *window in [UIApplication sharedApplication].windows) {
for (UIView *view in window.subviews) {
[view removeFromSuperview];
[window addSubview:view];
}
}

关于ios - 使用 UIAppearance 更改后更新导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15024037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com