0

我一直在使用下面的代码来更改我所有视图的导航栏:

- (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 方法中调用它。那么我的问题是,我将如何做到这一点,或者有更好的方法吗?

谢谢!

4

2 回答 2

2

您不必在应用程序委托中设置主题;你可以在任何你想要的地方做(你甚至可以让它互动)。您唯一需要注意的是,通过设置的属性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];
于 2013-02-16T04:38:10.913 回答
0

他们是否在更改 Settings.app 中的主题?只需将您的主题代码放入-applicationWillEnterForeground:您的应用程序委托中......

于 2013-02-16T04:22:28.680 回答