我有一个简单的 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/