2017-02-21 70 views
1

您能否建议我,在iOS> = 9.0中为MFMailComposeViewController设置状态栏样式的正确方法是什么? 我知道,[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];已被弃用,我无法使用它。 我知道可能的解决方案是增加类别如下:用于MFMailComposeViewController的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选择和实施中存在的我的应用程序中的所有ViewContollers - (UIStatusBarStyle)preferredStatusBarStyle(和我有很多他们的) 。 那么,有没有另一种解决方案?

+0

当你想重写某些东西时添加一个类别是错误的,所以它不是一个解决方案 – igrek

+0

参考https://stackoverflow.com/a/ 5272612/907692了解详情 – igrek

回答

0

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

- (UIStatusBarStyle)preferredStatusBarStyle { 
    return UIStatusBarStyleLightContent; 
} 

- (UIViewController *)childViewControllerForStatusBarStyle { 
    return nil; 
} 

,改变了根类导航控制器在故事板这一个。 它有帮助,现在导航控制器堆栈中出现的所有VC都具有灯状态栏。但无论如何,我不喜欢这个解决方案:(