CB-5431 - Status Bar Plugin blanks view on call overlaysWebView(false) in landscape orientation

Note that this has been tested and works on iPad only, and Universal. On iPhone only while on iPad, there is a black area where the status bar is (bug in statusBarBackgroundView positioning)
This commit is contained in:
Shazron Abdullah 2013-11-18 17:20:22 -08:00
parent 94afc08b1c
commit 062dfceb29

View File

@ -100,11 +100,7 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
_statusBarOverlaysWebView = YES; // default _statusBarOverlaysWebView = YES; // default
CGRect frame = [[UIApplication sharedApplication] statusBarFrame]; [self initializeStatusBarBackgroundView];
_statusBarBackgroundView = [[UIView alloc] initWithFrame:frame];
_statusBarBackgroundView.backgroundColor = [UIColor blackColor];
_statusBarBackgroundView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin);
[self styleLightContent:nil]; // match default backgroundColor of #000000 [self styleLightContent:nil]; // match default backgroundColor of #000000
@ -127,6 +123,19 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
[self.commandDelegate evalJs:[NSString stringWithFormat:@"StatusBar.isVisible = %@;", [UIApplication sharedApplication].statusBarHidden? @"false" : @"true" ]]; [self.commandDelegate evalJs:[NSString stringWithFormat:@"StatusBar.isVisible = %@;", [UIApplication sharedApplication].statusBarHidden? @"false" : @"true" ]];
} }
- (void) initializeStatusBarBackgroundView
{
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
if (UIDeviceOrientationIsLandscape(self.viewController.interfaceOrientation)) {
// swap width and height. set origin to zero
statusBarFrame = CGRectMake(0, 0, statusBarFrame.size.height, statusBarFrame.size.width);
}
_statusBarBackgroundView = [[UIView alloc] initWithFrame:statusBarFrame];
_statusBarBackgroundView.backgroundColor = [UIColor blackColor];
_statusBarBackgroundView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin);
}
- (void) setStatusBarOverlaysWebView:(BOOL)statusBarOverlaysWebView - (void) setStatusBarOverlaysWebView:(BOOL)statusBarOverlaysWebView
{ {
// we only care about the latest iOS version or a change in setting // we only care about the latest iOS version or a change in setting
@ -144,10 +153,20 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
} else { } else {
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame; CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
bounds.origin.y = statusBarFrame.size.height;
bounds.size.height -= statusBarFrame.size.height;
self.webView.frame = bounds; [self initializeStatusBarBackgroundView];
CGRect frame = self.webView.frame;
if (UIDeviceOrientationIsLandscape(self.viewController.interfaceOrientation)) {
frame.origin.y = statusBarFrame.size.width;
frame.size.height -= statusBarFrame.size.width;
} else {
frame.origin.y = statusBarFrame.size.height;
frame.size.height -= statusBarFrame.size.height;
}
self.webView.frame = frame;
[self.webView.superview addSubview:_statusBarBackgroundView]; [self.webView.superview addSubview:_statusBarBackgroundView];
} }