为ios中的不同视图控制器设置不同的选项卡栏外观

为ios中的不同视图控制器设置不同的选项卡栏外观,ios,objective-c,xcode,ios7,tabbar,Ios,Objective C,Xcode,Ios7,Tabbar,我有一个基于选项卡栏的应用程序 我已在我的应用程序IDFinishLaunchingWithOptions中设置选项卡栏的背景图像,代码如下所示 UIImage* tabBarBackground = [UIImage imageNamed:@"tabbarbottom2.png"]; [[UITabBar appearance] setBackgroundImage:tabBarBackground]; 我是在故事板上做这件事的 现在,用这个代码。我的Tabbar的背景图像已

我有一个基于选项卡栏的应用程序

我已在我的
应用程序IDFinishLaunchingWithOptions
中设置选项卡栏的背景图像,代码如下所示

UIImage* tabBarBackground = [UIImage imageNamed:@"tabbarbottom2.png"];
        [[UITabBar appearance] setBackgroundImage:tabBarBackground];
我是在故事板上做这件事的

现在,用这个代码。我的Tabbar的背景图像已经设置好,工作正常

但是我想为tabbar的不同ViewController设置不同的背景

我找了很多,但找不到这样做的方法

我在这个问题上纠缠了好一阵子

请帮我做这个


提前感谢。

您可以随时覆盖
viewDidLoad
中的默认设置。如果要为不同的选项卡栏控制器设置背景图像,则必须将UITabBarController子类化,并将以下内容添加到viewDidLoad

[self.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbarForThisController.png"]];
如果您想要根据所选选项卡的不同图片,则必须添加

[self.tabBarController.tabBar setBackgroundImage:[UIImage imageNamed:@"tabBarForThisTab.png"]];

在所选选项卡的视图控制器中设置选项卡栏外观的最佳做法是在每个视图控制器的viewDidLoad方法中设置选项卡栏外观。这样,外观更改看起来更自然,而不是像在ViewDidDisplay中那样,在向用户显示外观后,选项卡栏更改外观。您可以通过以下方式完成此任务:

- (void)viewDidLoad:(BOOL)animated {
    UIImage* tabBarBackground = [UIImage imageNamed:@"tabbarbottom2.png"];
    [[UITabBar appearance] setBackgroundColor:tabBarBackground];
}    

谢谢你的帮助。我在viewdidload和ViewWillDisplay中编写了代码,它非常适合我。你救了我。