3

(UIStatusBarStyle)preferredStatusBarStyle我目前使用在子类上定义选择器的 iOS 7 机制UINavigationController来控制状态栏在模态呈现的视图中的外观(返回UIStatusBarStyleLightContent)。使用 MFMailComposeViewController 的实例,我无法以任何方式影响状态栏的外观。

似乎问题在于MFMailComposeViewController(它是一个UINavigationController子类)的顶视图是 a MFMailComposeInternalViewController,它是私有的且未记录的,并且看起来像是我不应该搞砸的东西。尝试子类化或创建它的类别会产生编译器错误。它preferredStatusBarStyleUIStatusBarStyleDefault,我希望它在哪里UIStatusBarStyleLightContent

其他答案建议将“基于视图控制器的状态栏外观”的 plist 值设置为 NO,但如果不影响我的应用程序的其他部分,我不能这样做。有什么办法可以改变这个状态栏的外观吗?

4

2 回答 2

2

MFMailComposeViewController,从 iOS6 开始,实际上并不是真正的视图控制器,或者更确切地说,它不包含邮件组合视图控制器的真正视图层次结构。相反,它是远程视图控制器的代理,完全由不同的进程绘制,使用 XPC。

即使您在MFMailComposeViewController类中覆盖或调配方法,您也无法影响其行为。这是苹果故意的。

有关远程视图控制器和 XPC 的更多信息:http: //oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/

于 2013-09-19T18:46:46.183 回答
1

向 MFMailComposeViewController(而不是 MFMailComposeInternalViewController)添加一个类别以提供 preferredStatusBarStyle 对我有用,并且没有产生任何编译错误或警告。

有关我引用的原始答案,请参阅此问题:

iOS 7 状态栏中的 MFMailComposeViewController 为黑色

于 2013-09-25T23:18:26.517 回答