1

PhoneGap/Cordova (3.0) を使用してビルドされた iOS アプリがあり、iOS 7 および Xcode 5、特に新しいスタイルのステータス バーで正しく動作するように更新しようとしています。

私はネイティブ iOS プログラミングや Objective-C の経験があまりないので、作業を進めていくうちに物事を把握しているだけです。また、これは StackOverflow に関する私の最初の投稿でもあります。何か間違っています。

私が遭遇した問題はこれです:

PhoneGap には、アプリの上に表示される別の WebView である InAppBrowser プラグインが含まれています (ネイティブの Twitter アカウントが設定されていない場合、私のアプリは主に Twitter のログインに使用します)。これはまだ iOS 7 用にまったく更新されていないようです。そのため、ステータス バーは、プラグインに読み込まれた Web ページの上に表示されます。私は、WebView 自体のサイズを変更して、高さが 20 ピクセル低くなり、ステータス バーに隙間ができるようにすることで、これに対処しようとしました。

これは、目的の結果を達成するために変更したメイン コードです。

- (void)createViews {

CGRect webViewBounds = self.view.frame;

webViewBounds.origin.y += 20; //added by me
webViewBounds.size.height -= 20; //added by me
[self.view setFrame: webViewBounds]; //added by me

webViewBounds.size.height -= FOOTER_HEIGHT;

self.webView = [[UIWebView alloc] initWithFrame:webViewBounds];
self.webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

[self.view addSubview:self.webView];
[self.view sendSubviewToBack:self.webView];

(WebView は、self.view.frame に基づいてプラグインの他の場所でもサイズ変更され、画面の下部にある InAppBrowser ツールバー ボタンを可能にするために高さから少し減算されます)

したがって、これは self.view.frame のサイズと位置をステータス バーの下に合わせて配置し、それ以降のすべての WebView のサイズとサイズ変更はそのサイズと位置に基づいています。これはほぼ完全に機能しますが、WebView 自体の高さが常に大きくなりすぎる (Web ページの下部がツールバーの下になる) ことを除きます。self.view.frame.size.height からどれだけ引いてもまったく違いはありませんでした。期待どおりに動作させる唯一のことは、WebView の autoresizingMask をコメントアウトすることでした (もちろん、他の問題が発生しました)。

たくさんの実験(そして大量の髪の毛を引っ張る)の後、私は最終的にそれを絞り込みました. WebView が自動サイズ変更されると、実際には 20 であっても、frame.origin.y が 0 に設定されているかのように処理されているようです (そこから正しく収まるようにサイズ変更されます)。0 に設定すると、サイズが変更されます。ただし、他の値に設定すると、その高さの値がすでに考慮されていても、その分だけ高すぎます。

したがって、すべての WebView の高さの変更を変更して origin.y の値 (20px) を差し引くことでこれに対処できます。二回。これは意味がありますか?ここで何か不足していますか?

4

0 に答える 0