UITabBar自定义背景图像应用于一个视图控制器而不是AppDelegate



我在我的iPhone应用程序中使用主题。我在标签栏(时间轴和设置)中有两个标签,当用户转到第二个标签栏(设置)时,在设置中选择主题并选择主题,这将在第一个标签(时间轴)中设置背景图像和第一个表视图控制器的导航栏。这个作品。

我想用标签栏实现同样的事情,所以标签栏随着背景图像和导航栏而变化。

在我的时间轴表视图中,我将以下代码放入viewWillAppear:

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

但是,标签栏永远不会改变。改变标签栏的唯一方法是在AppDelegate中,但这会改变它的所有地方。我需要允许用户选择一个主题它会相应地改变所以我需要在每个视图控制器的基础上改变这个,和导航栏完全一样。

在这个时间轴表视图的viewWillAppear中,我用:

设置导航栏
UIImage *navBackgroundImage = [UIImage imageNamed:@"Purplepinknav.png"];
[[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];

这总是有效的。这并不适用于标签栏,但与上面的代码。

编辑:我已经添加了apperanceWhenContainedIn到viewWillAppear:

UIImage *tabBackgroundImage = [UIImage imageNamed:@"SolidPurple.png"];
[[UITabBar appearance] setBackgroundImage:tabBackgroundImage];
[UITabBar appearanceWhenContainedIn:[UITabBar class], [UITabBar class], nil];

但这似乎没有任何作用。

我该如何着手解决这个问题?任何协助将不胜感激。

有一个UIAppearance代理调用的细化,你可以尝试…

+ (id)appearanceWhenContainedIn:(Class <UIAppearanceContainer>)ContainerClass,...

这将一个UIAppearance Proxy兼容对象的外观设置为只有当它被包含在一个特定的视图控制器子类中时才提供的值。

最新更新