modalPresentationStyle

modalPresentationStyle

我有一个简单的 Controller ,它显示了另一个具有自定义过渡的 Controller 。我使用了坚实的导航栏:

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
self.navigationController.navigationBar.barTintColor = [UIColor purpleColor];
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

这是第二个 Controller :

当我在子 Controller 中打开MFMailComposeViewController时,状态栏是白色的(这同样适用于UIActivityViewController):

原来,这与将modalPresentationStyle设置为UIModalPresentationCustom有关:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    UIViewController *controller = (UIViewController*)segue.destinationViewController;

    // this line cause the bug
    //controller.modalPresentationStyle = UIModalPresentationCustom;

    controller.transitioningDelegate = self;
}

如果controller.modalPresentationStyle保持不变,则状态栏颜色正确。而且,此属性似乎不会干扰自定义转换。

我在这里想念什么吗?为什么modalPresentationStyle影响系统 Controller 中的状态栏类型?这可能是错误吗?

完整代码在这里https://github.com/mbigatti/StatusBarTest

最佳答案

也许您可以尝试添加:

controller.modalPresentationCapturesStatusBarAppearance = YES

设置modalPresentationStyle之后。根据UIViewController class reference:

关于ios - 将modalPresentationStyle设置为custom会导致MFMailComposeViewController中的状态栏颜色错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24406275/

10-10 23:50