diff --git a/plugin.xml b/plugin.xml
index ad69b14..d4c937a 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -24,12 +24,17 @@
+
+
+
+
diff --git a/src/ios/CDVStatusBar.m b/src/ios/CDVStatusBar.m
index 7a301b8..0809d24 100644
--- a/src/ios/CDVStatusBar.m
+++ b/src/ios/CDVStatusBar.m
@@ -32,6 +32,14 @@
return [self.commandDelegate.settings objectForKey:[key lowercaseString]];
}
+- (void) checkInfoPlistKey
+{
+ NSNumber* uiviewControllerBasedStatusBarAppearance = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIViewControllerBasedStatusBarAppearance"];
+ if (uiviewControllerBasedStatusBarAppearance == nil || [uiviewControllerBasedStatusBarAppearance boolValue]) {
+ NSLog(@"ERROR: To use the statusbar plugin, in your app's Info.plist, you need to add a 'UIViewControllerBasedStatusBarAppearance' key with a value of ");
+ }
+}
+
- (void)pluginInitialize
{
_statusBarOverlaysWebView = YES; // default
@@ -41,10 +49,22 @@
_statusBarBackgroundView = [[UIView alloc] initWithFrame:frame];
_statusBarBackgroundView.backgroundColor = [UIColor blackColor];
- NSString* setting = @"StatusBarOverlaysWebView";
+ NSString* setting;
+
+ setting = @"StatusBarOverlaysWebView";
if ([self settingForKey:setting]) {
self.statusBarOverlaysWebView = [(NSNumber*)[self settingForKey:setting] boolValue];
}
+
+ setting = @"StatusBarBackgroundColor";
+ if ([self settingForKey:setting]) {
+ [self _statusBarBackgroundColorByHexString:[self settingForKey:setting]];
+ }
+
+ setting = @"StatusBarStyle";
+ if ([self settingForKey:setting]) {
+ [self setStatusBarStyle:[self settingForKey:setting]];
+ }
}
- (void) setStatusBarOverlaysWebView:(BOOL)statusBarOverlaysWebView
@@ -94,23 +114,43 @@
self.statusBarOverlaysWebView = [value boolValue];
}
+- (void) setStatusBarStyle:(NSString*)statusBarStyle
+{
+ // default, lightContent, blackTranslucent, blackOpaque
+ NSString* lcStatusBarStyle = [statusBarStyle lowercaseString];
+
+ if ([lcStatusBarStyle isEqualToString:@"default"]) {
+ [self styleDefault:nil];
+ } else if ([lcStatusBarStyle isEqualToString:@"lightcontent"]) {
+ [self styleLightContent:nil];
+ } else if ([lcStatusBarStyle isEqualToString:@"blacktranslucent"]) {
+ [self styleBlackTranslucent:nil];
+ } else if ([lcStatusBarStyle isEqualToString:@"blackopaque"]) {
+ [self styleBlackOpaque:nil];
+ }
+}
+
- (void) styleDefault:(CDVInvokedUrlCommand*)command
{
+ [self checkInfoPlistKey];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}
- (void) styleLightContent:(CDVInvokedUrlCommand*)command
{
+ [self checkInfoPlistKey];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
- (void) styleBlackTranslucent:(CDVInvokedUrlCommand*)command
{
+ [self checkInfoPlistKey];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
}
- (void) styleBlackOpaque:(CDVInvokedUrlCommand*)command
{
+ [self checkInfoPlistKey];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];
}
@@ -127,6 +167,16 @@
}
}
+- (void) _statusBarBackgroundColorByHexString:(NSString*)hexString
+{
+ unsigned int rgbValue = 0;
+ NSScanner* scanner = [NSScanner scannerWithString:hexString];
+ [scanner setScanLocation:1];
+ [scanner scanHexInt:&rgbValue];
+
+ _statusBarBackgroundView.backgroundColor = [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0];
+}
+
- (void) statusBarBackgroundColorByHexString:(CDVInvokedUrlCommand*)command
{
NSString* value = [command.arguments objectAtIndex:0];
@@ -138,12 +188,7 @@
return;
}
- unsigned int rgbValue = 0;
- NSScanner* scanner = [NSScanner scannerWithString:value];
- [scanner setScanLocation:1];
- [scanner scanHexInt:&rgbValue];
-
- _statusBarBackgroundView.backgroundColor = [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0];
+ [self _statusBarBackgroundColorByHexString:value];
}