如果在动作扩展程序中,我按如下方式更改导航栏的颜色:
class ActionViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UINavigationBar.appearance().barTintColor = UIColor.green
然后结果如下所示,状态栏显示为白色:
但是如果同一行(UINavigationBar.appearance().barTintColor
)应用于应用程序(而不是扩展名),则结果会有所不同,例如,如果将以下行添加到XCode主从模板项目中:
class MasterViewController: UITableViewController {
override func viewDidLoad() {
UINavigationBar.appearance().barTintColor = UIColor.green
然后这是状态栏也为绿色的结果:
如何让状态栏在动作扩展程序中显示为绿色?
答案 0 :(得分:5)
这是因为默认ActionViewController
在没有UINavigationController的情况下使用UINavigationBar
。如果您查看ActionViewController
的故事板,您可以看到UINavigationBar
比它更短20分用于UINavigationController。
statusBar背后的视图是rootView而不是NavigationBar。
解决方案是:
1.更改viewController结构以包含UINavigationController。
2.在状态栏下方添加statusBarBackgroundview,并更改其颜色:
- (void)viewDidLoad {
[super viewDidLoad];
[UINavigationBar appearance].barTintColor = [UIColor greenColor];
UIView* statusBarBackgroundView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 20)];
statusBarBackgroundView.backgroundColor = [UIColor greenColor];
[self.view insertSubview:statusBarBackgroundView atIndex:0];
}