我正在为我的导航栏设置图像:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault];
然后我不希望这个图像用于MFMessageComposeViewController
类,所以我通过这样做排除它:
[[UINavigationBar appearanceWhenContainedIn:[MFMessageComposeViewController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
但它没有效果(导航栏仍然使用MFMessageComposeViewController
内的图像进行样式设置。我在这里缺少什么?
答案 0 :(得分:4)
找到我的问题的解决方案:
对MFMessageComposeViewController
在init方法中,将backgroundImage
的{{1}}设置为navigationBar
瞧!
nil
答案 1 :(得分:2)
在呈现MFMessageComposeViewController之前尝试
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"MyUINavigationBarImageClear"] forBarMetrics:UIBarMetricsDefault];
并在messageComposeViewController中:didFinishWithResult:回调重置为
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"MyUINavigationBarImageFull"] forBarMetrics:UIBarMetricsDefault];
我还设置了MFMessageComposeViewController的.navigationBar.tintColor属性,以获取取消按钮以匹配我的MyUINavigationBarImageClear图像。
答案 2 :(得分:0)
这里有两个想法(但没有经过测试):
1)我怀疑尝试使用nil覆盖是行不通的 - 该语句被忽略。我建议你做的是创建一个透明的图像,并将其用作MFMessageComposeViewController的背景。
2)如果失败了,那么我怀疑必须非常具体地说明何时使用你的图像,所以你必须用一长串的“当包含在”整个班级的陈述中替换第一个陈述。如果你有一个你的所有视图控制器使用的子类 - 一些基类 - 那么我相信你可以使用它。希望#1有效!