全屏 UIViewController 的 StatusBarStyle

Posted

技术标签:

【中文标题】全屏 UIViewController 的 StatusBarStyle【英文标题】:StatusBarStyle for Full Screen UIViewController 【发布时间】:2014-04-03 17:32:29 【问题描述】:

我目前有一个将状态栏样式设置为浅色内容的应用程序。

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

除了全屏模式窗口外,这按预期工作。下面是创建模态 UIViewController 的代码:

@implementation PostCard
- (id)initWithToRecipients:(NSArray *)toRecipients subject:(NSString *)subject message:(NSString *)message ishtml:(BOOL)isHTML

    if ([MFMailComposeViewController canSendMail] && (self = [super init]))
    
        self.viewController = [MFMailComposeViewController new];
        self.viewController.mailComposeDelegate = self;

        [_viewController setToRecipients:toRecipients];
        [_viewController setSubject:subject];
        [_viewController setMessageBody:message isHTML:isHTML];

        self.viewController.modalPresentationStyle = UIModalPresentationFullScreen;
        self.viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
     else 
        NSLog(@"Cannont send mail from current device.");
    

    return self;

...
@end

明信片的视图控制器显示为

[myOtherViewController presentViewController:myPostCard.viewController animated:YES completion:nil];

在全屏模式下,statusBarStyle 恢复为深色内容。如果我将modalPresentationStyle 更改为UIModalPresentationFormSheet,则会保留灯光内容。

有没有办法以编程方式设置模式窗口的“statusBarStyle”?或者告诉它从呈现的 UIViewController 继承?或者这是一个错误? (注意,我也尝试过设置我的项目属性,但没有成功。)

提前致谢!

【问题讨论】:

【参考方案1】:
- (UIStatusBarStyle)preferredStatusBarStyle

    return UIStatusBarStyleLightContent;

【讨论】:

以上是关于全屏 UIViewController 的 StatusBarStyle的主要内容,如果未能解决你的问题,请参考以下文章

在不覆盖全屏的 UIViewController 中模态显示 UIViewController

iOS - 在 UINavigationController 中将 UIViewController 显示为全屏

PresentViewController 一个带有 UINavigationController 的非全屏 UIViewController

模态 UIViewController 总是在 iPad 上全屏显示。为啥?

在 Objective-C 中让我的 UIViewController 全屏显示

在一个 UIVIewController 中有两个垂直的全屏 UIViews?