我一直在使用以下代码更改所有观看次数的导航栏:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIImage *gradientImage44 = [[UIImage imageNamed:@"clear_navigation_bar_texture_44"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:gradientImage44 forBarMetrics:UIBarMetricsDefault];
}
但我现在希望导航栏能够根据'主题更改为用户选择的其他图像。他们想要应用程序。问题是,我无法将代码放在这里,因为它只能在应用程序加载时才能运行。所以,我想让代码成为一个单独的方法,并在didFinishLaunching ...方法和我在用户更改主题时调用的viewController方法中调用它。'我的问题是,我将如何做到这一点,还是有更好的方法呢?
谢谢!
答案 0 :(得分:2)
您不必在app delegate中设置主题;你可以在任何你想要的地方做到(你甚至可以让它互动)。您唯一需要注意的是,通过UIAppearance
设置的属性只能通过新视图进行实例化。如果您有需要更新的现有视图,则需要手动执行此操作。例如:
UIImage *gradientImage44 = [[UIImage imageNamed:@"clear_navigation_bar_texture_44"] resizableImageWithCapInsets:UIEdgeInsetsZero];
[[UINavigationBar appearance] setBackgroundImage:gradientImage44 forBarMetrics:UIBarMetricsDefault];
[[self navigationController] navigationBar] setBackgroundImage:gradientImage44 forBarMetrics:UIBarMetricsDefault];
答案 1 :(得分:0)
他们是否在更改Settings.app中的主题?只需将您的主题代码放在-applicationWillEnterForeground:
的app appate ...