我正在尝试为我的应用程序实现不同的主题。用户可以在 Settingsbundle 中选择不同的主题,然后应用程序应该根据用户的决定显示主题。
我在 中调用了主题化方法applicationWillEnterForeground
,但是什么都不会改变。当我在它中设置主题代码时,- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
它只会在我第一次启动它时为我的应用程序设置主题,每次启动它都不会改变任何东西。
我无法禁用后台模式,因为我的应用程序将无法工作。知道吗,如何在不使应用程序崩溃的情况下调用主题化方法?
这是我的主题代码,每次应用程序进入前台时都应该调用它:
-(void)themeDecicion {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger themeMode = [defaults integerForKey:@"themeMode"];
if (themeMode == 0) {
themeMode = 1;
}
if (themeMode == 1) {
NSLog(@"automatically");
NSString *colorString = [DeviceColor frontColor];
if ([colorString isEqualToString:@"Black"]) {
[self blackTheme];
} else if ([colorString isEqualToString:@"White"]) {
[self whiteTheme];
} else {
[self blackTheme];
}
} else if (themeMode == 2) {
[self blackTheme];
} else if (themeMode == 3) {
[self whiteTheme];
} else {
[self blackTheme];
}
}
-(void)blackTheme {
[[UITabBar appearance] setTintColor:[UIColor whiteColor]];
[[UITabBar appearance] setBarStyle:UIBarStyleBlack];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
[[UISearchBar appearance] setBarStyle:UIBarStyleDefault];
}
-(void)whiteTheme {
UIColor *defaultColor = [UIColor colorWithRed:(21/255.0) green:(121/255.0) blue:(251/255.0) alpha:1];
[[UITabBar appearance] setTintColor:defaultColor];
[[UITabBar appearance] setBarStyle:UIBarStyleDefault];
[[UINavigationBar appearance] setTintColor:defaultColor];
[[UINavigationBar appearance] setBarStyle:UIBarStyleDefault];
[[UISearchBar appearance] setBarStyle:UIBarStyleDefault];
}