Как сделать строку состояния PhoneGap в iOS прозрачной? - PullRequest
4 голосов
/ 15 декабря 2011

Я использую PhoneGap для создания приложения для iOS и не могу заставить работать эффект полноэкранного / полупрозрачного статус-бара.

Я установил для * -info.plist Status bar style значение Transparent black style (alpha of 0.5), которое работает, пока открыт заставка. Но строка состояния становится черной, когда отображается UIWebView PhoneGap.

Я попытался установить метатег apple-mobile-web-app-status-bar-style на black-translucent в моем index.html, но, похоже, это не имеет никакого эффекта.

Я попытался установить опцию TopStatusBar в phonegap.plist на blackTranslucent, но это также не имело никакого эффекта. Чего мне не хватает?

Ответы [ 2 ]

4 голосов
/ 19 января 2012

На самом деле строка состояния является полупрозрачной.

- (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 голос
/ 18 января 2012

Вы можете попытаться добавить в свой Info.plist для своего приложения:

Key: Status bar style
Value:  Black translucent style

или если вы используете необработанные пары ключ-значение

<key>UIStatusBarStyle</key>  
<string>UIStatusBarStyleBlackTranslucent</string> 

Этот ответ адаптирован из другогопредоставленный mwbrooks для аналогичного вопроса.Попробуйте.

( Phonegap - Как мне сделать черную строку состояния? )

Или, может быть, в вашем (void) методе viewDidLoad вашего ** AppDelegate.m, вы можете положить:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...