为ios中的不同视图控制器设置不同的tabbar外观

时间:2014-08-04 13:28:42

标签: ios objective-c xcode ios7 tabbar

我正在使用基于标签栏的应用程序。

我已在applicationDidFinishLaunchingWithOptions的标签栏中设置背景图片,代码如下所示。

UIImage* tabBarBackground = [UIImage imageNamed:@"tabbarbottom2.png"];
        [[UITabBar appearance] setBackgroundImage:tabBarBackground];

我在故事板中这样做。

现在,使用此代码。我的Tabbar的背景图像已经设置好并且运行良好。

但我想为tabbar的不同viewcontrollers设置不同的背景。

我经常搜索,但找不到办法。

我被困在这一段时间了。

请帮我解决这个问题。

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

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

如果您需要不同的图片,具体取决于所选的标签,您必须添加

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

到所选标签的视图控制器中的viewDidLoad

答案 1 :(得分:1)

在每个viewController的viewDidLoad方法中设置tabBar外观是最佳做法。这样,外观更改看起来更自然,而不是tabBar在已经向用户显示之后更改外观,就像在viewDidAppear中执行此操作一样。您可以通过以下方式完成此任务:

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