我有一个呈现的视图控制器。但是它的状态栏颜色与导航栏颜色不同。我如何确保它们是相同的颜色?
答案 0 :(得分:1)
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
确保此功能位于呈现视图控制器,并且视图控制器正在显示。
答案 1 :(得分:0)
尝试以下代码,如果有帮助:
将与当前viewController相同的样式设置为viewController,如下所示:
//newViewController is your ViewController
newViewController.navigationBar.barStyle = self.navigationController.navigationBar.barStyle;
[self presentViewController:newViewController animated:YES completion:nil];
此外,如果您使用导航控制器并希望基于每个视图控制器控制状态栏,则您需要继承UINavigationController
并实施preferredStatusBarStyle
。
- (UIStatusBarStyle)preferredStatusBarStyle
{
return self.topViewController.preferredStatusBarStyle;
}
OR
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
答案 2 :(得分:0)
//change the background of status bar
UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 20);
addStatusBar.backgroundColor = bgStatus;
[self.view addSubview:addStatusBar];
//将状态栏的文字颜色从黑色更改为白色
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
答案 3 :(得分:0)
iOS 13 或更高版本我们面临着非全屏呈现的控制器。在这种情况下,您可以使用此 documentation。