MFMailComposeViewController 忽略了 iOS 7 中的一些 UIAppearance 协议
Posted
技术标签:
【中文标题】MFMailComposeViewController 忽略了 iOS 7 中的一些 UIAppearance 协议【英文标题】:MFMailComposeViewController ignoring some of UIAppearance protocol in iOS 7 【发布时间】:2013-10-11 13:46:39 【问题描述】:我有一个仅限 ios 7 的应用程序,它使用 UIAppearance 在整个应用程序中设置 UINavigationBar 的样式。
我的 AppDelegate 中有以下代码:
[[UINavigationBar appearance] setBackgroundImage:redImage forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearanceWhenContainedIn:[MFMailComposeViewController class], nil] setBackgroundImage:blueImage forBarMetrics:UIBarMetricsDefault];
然而 MFMailComposeViewController 以 redImage 背景出现!
文档说明如下:
重要提示:这个类的视图层次是私有的,你不能修改它。但是,您可以使用 UIAppearance 协议自定义实例的外观。
所以没有理由上述不应该工作,我 100% 确定redImage
和 blueImage
是不同颜色的图像。
还有其他人遇到过这个问题吗?我猜这是 iOS 7 中的一个错误,但我没有时间检查 iOS 6(我使用 iPad 4 得到这些结果)。
【问题讨论】:
您是否尝试在显示作曲家之前设置外观? @LeszekŻarna 是的,绕过它的一个技巧是在我呈现它之前设置全局外观,然后在我关闭它之前将其更改回来..但这似乎不切实际,我想知道是否有一个适当的修复它 @LeszekŻarna 你遇到过类似的事情吗?我被卡住了***.com/questions/20768736/… 【参考方案1】:您可以直接在 MFMailComposeViewController 上设置外观
MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
[MFMailComposeViewController.navigationBar setBackgroundImage:blueImage forBarMetrics:UIBarMetricsDefault];
【讨论】:
至少现在没有了。以上是关于MFMailComposeViewController 忽略了 iOS 7 中的一些 UIAppearance 协议的主要内容,如果未能解决你的问题,请参考以下文章