2014-03-19 51 views
0

我正在主題化我的應用程序,讓用戶可以在應用程序設置中選擇和切換主題。用新的背景,導航欄圖像和標籤欄圖像來呈現我的iPhone應用程序

我有一個三選項卡選項卡欄控制器。

選項卡1 =時間線;標籤2 =事件和標籤3 =所有三個都是表格視圖的設置。

用戶轉到設置,單擊「主題」單元格並選擇一個主題。通過NSUserDefaults,我得到了背景圖像和導航欄根據主題變化。不過,我正在努力使Tab Bar圖像一致地改變。

現在,它被應用在AppDelegate中,但它適用於每個場景。

在我的時間線的TableView,並在viewWillAppear中,我有:

else if ([self.selectedTheme isEqualToString:@"Twirl"]) 
{ 
    ThemeManager *themeManager = [ThemeManager sharedManager]; 
    themeManager.backgrounds = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ReddishBlack.png"]]; 
    self.tableView.backgroundView = themeManager.backgrounds; 
    UIImage *navBackgroundImage = [UIImage imageNamed:@"ReddishBlackNav.png"]; 

    [[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault]; 

} 

這工作真的很好。

然而,如果在該結束時,如果上述說法,我補充一下:

UIImage *tabBackgroundImage = [UIImage imageNamed:@"Orange3tab.png"]; 
[[UITabBar appearance] setBackgroundImage:tabBackgroundImage]; 

當我選擇在設置這個主題,標籤欄永遠不會改變。

我做了網上搜索的一點,過這個傳來:

UIImage *tabBackground = [[UIImage imageNamed:@"tabBarBackground.jpg"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
// Set background for all UITabBars 
[[UITabBar appearance] setBackgroundImage:tabBackground]; 
// Set background for only this UITabBar 
[[tabBarController tabBar] setBackgroundImage:tabBackground]; 

我想設置這樣整個應用程序。所以如果用戶點擊「綠色」主題,那麼綠色標籤欄會應用到整個應用程序。我怎樣才能做到這一點?如果我必須設置只有這個UITabBar的背景,如上面的代碼所示,我必須爲每個類做這個,我很高興,但我怎麼得到一個[[tabBarController的TabBar]

對此的任何幫助都會非常有幫助。我基本上希望確保選項欄欄主題與選中時的背景和導航欄保持相同的主題。

回答

0

這已被固定在我的viewWillAppear中下面的代碼:

UIImage *tabBackground = [[UIImage imageNamed:@"purplytab.png"] 
           resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
    [self.tabBarController.tabBar setBackgroundImage:tabBackground];