我使用PhoneGap构建iOS应用程序,似乎无法使全屏/半透明状态栏效果起作用。
我将* -info.plist Status bar style
设置为Transparent black style (alpha of 0.5)
,这在启动画面启动时有效。但是,当显示PhoneGap的UIWebView时,状态栏会变黑。
我尝试在我的index.html中将apple-mobile-web-app-status-bar-style
元标记设置为black-translucent
,但这似乎没有任何效果。
我尝试将phonegap.plist的TopStatusBar
选项设置为blackTranslucent
,但这也没有任何效果。我错过了什么?
答案 0 :(得分:4)
实际上状态栏是半透明的。
- (void)webViewDidFinishLoad:(UIWebView *)theWebView
{
// only valid if StatusBarTtranslucent.plist specifies a protocol to handle
if(self.invokeString)
{
// this is passed before the deviceready event is fired, so you can access it in js when you receive deviceready
NSString* jsString = [NSString stringWithFormat:@"var invokeString = \"%@\";", self.invokeString];
[theWebView stringByEvaluatingJavaScriptFromString:jsString];
}
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;
CGRect frame = theWebView.frame;
NSLog(@"The WebView: %f %f %f %f", frame.origin.x, frame.origin.y, frame.size.width, frame.size.height);
frame = theWebView.superview.frame;
NSLog(@"The WebView superview: %f %f %f %f", frame.origin.x, frame.origin.y, frame.size.width, frame.size.height);
frame.size.height += frame.origin.y;
frame.origin.y = 0;
[theWebView.superview setFrame:frame];
return [ super webViewDidFinishLoad:theWebView ];
}
此代码的日志结果显示:
The WebView: 0.000000 0.000000 320.000000 460.000000
The WebView superview: 0.000000 20.000000 320.000000 460.000000
所以修复webview.superview框架可以获得UIStatusBarTranslucent的效果
CGRect frame = theWebView.superview.frame;
frame.size.height += frame.origin.y;
frame.origin.y = 0;
[theWebView.superview setFrame:frame];
答案 1 :(得分:1)
您可以尝试在应用的Info.plist中添加:
Key: Status bar style
Value: Black translucent style
或者如果您使用原始键值对
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleBlackTranslucent</string>
这个答案改编自mwbrooks针对类似问题给出的另一个答案。试一试。
(Phonegap - How do i make the statusbar black?)
或者,也许,在您的** AppDelegate.m的(void)viewDidLoad方法中,您可以输入:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;