Phonegapを2.3.0から2.5.0に更新した後、iOS / iPhoneアプリのスプラッシュスクリーンは、アプリの起動中に奇妙な20px下にシフトします。最初はステータスバーの後ろに配置されますが、すぐに20px下に下がります。これは、Phonegapのデフォルトテンプレートでも発生します。Phonegapの以前のバージョンでは、この問題は発生しませんでした。これを修正するにはどうすればよいですか?
4 に答える
やりたいステータスバーを含めると、20pxシフトで同じ問題が発生しました。この問題を解決するために、ファイルCDVSplashScreen.mを編集し、次の行を変更しました。
_imageView.frame = CGRectMake(0、0、_imageView.image.size.width、_imageView.image.size.height);
に:
_imageView.frame = CGRectMake(0、-20、_imageView.image.size.width、_imageView.image.size.height);
私はiPhone4と5、および通常のiPhone用のシミュレーターでテストしましたが、うまくいったようです。
プロジェクトを2.6.0バージョンに更新することもできます。この問題はcordova2.5で認識されています。私は同じ問題を抱えていました、そして私はそれを修正するためにそれを更新するだけです
XCodeターゲットには、iPhoneの展開情報のセクションがあります。そのパネルのステータスバーセクションには、起動時にステータスバーを非表示にするための[表示]チェックボックスがあります。これにより、iOSのリリースとCordovaの準備の間に見られる20pxのシフトを防ぐことができます。
1)ステータスバーを非表示にする
XCode 4.6では、プロジェクトを選択し、[概要]タブを選択して、[アプリケーションの起動時に非表示にする]チェックボックスをオンにします。
2)アプリの読み込みが完了したら、ステータスバーを再度表示します。あなたは呼び出すことによってそれを行うことができます:
[[UIApplication sharedApplication] setStatusBarHidden:NO
withAnimation:UIStatusBarAnimationFade];
3)Webビューがステータスバーの後ろに部分的に隠れている場合は、Webビューフレームのサイズを変更する必要がある場合もあります。
CGRect r = webView.frame;
r.size.height -= 20;
r.origin.y = 20;
webView.frame = r;
このための単純なPhonegapプラグインを作成しました。これは、javascriptでdevicereadyイベントが発生した直後に呼び出します(super.webviewのプラグインからWebビューにアクセスできます)。