为什么UIAppearance在applicationWillEnterForeground中不起作用

时间:2013-11-03 20:40:57

标签: ios uiapplicationdelegate uiappearance

我正在尝试为我的应用程序实现不同的主题。用户可以在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];

}

0 个答案:

没有答案