我目前使用iOS 7机制在(UIStatusBarStyle)preferredStatusBarStyle
子类上定义UINavigationController
选择器来控制模态显示视图中状态栏的外观(返回UIStatusBarStyleLightContent
)。使用MFMailComposeViewController的实例,我无法以任何方式影响状态栏的外观。
似乎问题是MFMailComposeViewController
(这是一个UINavigationController
子类)的顶视图是MFMailComposeInternalViewController
,它是私有且没有文档的,看起来像我不应该不要搞砸。尝试子类化或创建它的类别会生成编译器错误。它是preferredStatusBarStyle
UIStatusBarStyleDefault
,我希望它是UIStatusBarStyleLightContent
。
其他答案建议将“查看基于控制器的状态栏外观”的plist值设置为NO,但我不能在不影响应用程序的其他部分的情况下执行此操作。有没有办法改变这个状态栏的外观?
答案 0 :(得分:2)
MFMailComposeViewController
,因为iOS6实际上不是真正的视图控制器,或者更确切地说,它不包含邮件组合视图控制器的真实视图层次结构。相反,它是远程视图控制器的代理,完全由不同的进程使用XPC绘制。
即使您在MFMailComposeViewController
类中覆盖或调整方法,也无法影响其行为。这是Apple的目的。
有关远程视图控制器和XPC的更多信息,请访问: http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/
答案 1 :(得分:1)
向MFMailComposeViewController(而不是MFMailComposeInternalViewController)添加一个类别,以便为我提供preferredStatusBarStyle,并且不会生成任何编译错误或警告。
请参阅此问题以获取我引用的原始答案: