MFMailComposeViewController 的 UIStatusBarStyleLightContent

UIStatusBarStyleLightContent for MFMailComposeViewController

你能给我建议吗,在 iOS >= 9.0 中为 MFMailComposeViewController 设置状态栏样式的正确方法是什么? 我知道 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 已被弃用,我无法使用它。 我知道可能的解决方案是添加这样的类别:

#import "MFMailComposeViewController+StatusBarStyle.h"
@implementation MFMailComposeViewController (StatusBarStyle)
#pragma mark - Status bar management
- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
- (UIViewController *)childViewControllerForStatusBarStyle {
    return nil;
}
@end

但在这种情况下,我应该启用 View controller-based status bar appearance 选项并在我的应用程序中存在的所有 ViewContoller 中实现 - (UIStatusBarStyle)preferredStatusBarStyle(我有很多)。 那么,还有其他解决方案吗?

好的,我创建了自己的 CommonNavigationViewController,添加了这两个方法:

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

- (UIViewController *)childViewControllerForStatusBarStyle {
    return nil;
}

并将Storyboard中Root Navigation Controller的class改成了这个。 它有帮助,现在出现在导航控制器堆栈中的所有 VC 都有灯光状态栏。但无论如何,我不喜欢这个解决方案:(

(UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

将此添加到 yourviewcontroller.m 文件。