2011-12-14 2 views
4

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

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

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

Я пробовал установить номер телефона TopStatusBar phonegap.plist, но это тоже не имело никакого эффекта. Что мне не хватает?

ответ

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?)

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

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent; 
+0

Спасибо за ваш maujee ответ. Хорошее решение «ol * .plist», похоже, работает только с визуализированным приложением для настройки по умолчанию или черным, к сожалению, не для полупрозрачного. Я пробовал код во всех функциях 'AppDelegate.m', но похоже, что он переопределяется, перелистывая черным. –

4

На самом деле Status Bar является прозрачным.

- (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]; 
+0

Thats it :) Спасибо Esepakuto. –

+0

Я не могу как им не OP :) –

+0

Ups, thnx в любом случае;) – Esepakuto

Смежные вопросы