MFMailComposeViewController in iOS 7 statusbar are black MFMailComposeViewController in iOS 7 statusbar are black ios ios

MFMailComposeViewController in iOS 7 statusbar are black


Set the UIApplication statusBarStyle in the completion block of presentViewController for your MFMailComposeViewController. i.e.

    MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];    [self.navigationController presentViewController:mailVC animated:YES completion:^{        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];    }];

You may also need to add and/or set "View controller-based status bar appearance" to NO in your Info.plist file.


Try to add category to MFMailComposeViewController

EDIT: this solution works if "View controller-based status bar appearance" == YES

@implementation MFMailComposeViewController (IOS7_StatusBarStyle)-(UIStatusBarStyle)preferredStatusBarStyle{   return UIStatusBarStyleLightContent;}-(UIViewController *)childViewControllerForStatusBarStyle{   return nil;}@end


Swift solution.Set View controller-based status bar appearance to YES

import UIKitimport MessageUIimport AddressBookUIextension MFMailComposeViewController {    override func preferredStatusBarStyle() -> UIStatusBarStyle {        return .LightContent    }    override func childViewControllerForStatusBarStyle() -> UIViewController? {        return nil    }}extension ABPeoplePickerNavigationController {    override func preferredStatusBarStyle() -> UIStatusBarStyle {        return .LightContent    }    override func childViewControllerForStatusBarStyle() -> UIViewController? {        return nil    }}