如何在不需要时取消UIAppearance?

9

在我的AppDelegate中,我使用UIAppearance来设置自己的NavigationBar,代码如下:

[[UINavigationBar appearance] setTintColor:[UIColor blackColor]];
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav5.png"] forBarMetrics:UIBarMetricsDefault];

但是我的应用程序某些视图不需要它。我该如何摆脱它,以便在相关视图中仅使用IB?

1个回答

12

您不需要使用代理。只需获取实际的navigationBar,它应该看起来不同,并直接在其上设置颜色即可。

[navigationBarInstance setTintColor:[UIColor blackColor]];
[navigationBarInstance setBackgroundImage:[UIImage imageNamed:@"nav5.png"] forBarMetrics:UIBarMetricsDefault];

如果您想恢复标准样式,也可以将两个值都设置为nil。(由Ben Clayton测试)。

[navigationBarInstance setTintColor:nil];
[navigationBarInstance setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

将背景图像和颜色设置为 nil 确实会将样式设置回默认值。已测试。 - Ben Clayton
1
MFMailComposeViewController实例上不起作用(请参见https://alpha.app.net/stuffmc/post/5028278) - StuFF mc
1
那么你是给它点了踩吗?这只是一个普遍的问题,与邮件组合器无关。 - calimarkus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接