我使用AppDelegate.swift
中的以下代码为我的状态栏添加透明外观:
statusBar = UIView(frame: CGRectMake(0, 0, self.window!.frame.width, 20))
statusBar!.backgroundColor = someTransparentColor // customized UIColor
self.window!.rootViewController!.view.addSubview(statusBar!)
这是我的应用程序的结构:
X Y
| |
NC NC
| |
NC -> A -> B -> C (NC = Navigation Controller)
以上代码适用于视图A,B,C;但不适用于X和Y(这是因为我将statusBar子视图添加到rootViewController)。为了使它适用于X和Y,我能做些什么呢?当然,我可以在每个相应的视图控制器中复制该代码,但我不想避免这种情况!
注意:我有X和Y使用单独的导航控制器,因为我在模板上呈现它们,并且NC可以轻松添加导航栏/工具栏,特别是因为它们是{{1使用静态表。
答案 0 :(得分:2)
转到您的应用程序info.plist
View controller-based status bar appearance
设为NO
Status bar style
设为UIStatusBarStyleLightContent
然后转到您的应用程序的AppDelegate并将以下代码粘贴到您设置Windows的RootViewController的位置。
#define IS_OS_5_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0)
#define IS_OS_6_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0)
#define IS_OS_7_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
#define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
if (IS_OS_6_OR_LATER)
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, [UIScreen mainScreen].bounds.size.width, 20.0)];
view.backgroundColor = [UIColor blackColor];
[self.window.rootViewController.view addSubview:view];
}