2013.09.26 · 技術と道具

iOS7の半透明デザインとHTML5アプリさらにPhoneGap

iOS7が出てステータスバーで苦しんだ話は、以前書きました。

一方で、iOS7のAppのバックグラウンド更新機能は使えそうじゃないかという話も書きました。

あと、もう一つ。iOS7特有の半透明デザインに苦しんだ(今も苦しんでいる)話を書いて、iOS7リリース直後のドタバタネタを締めようかと思います。

まず、これを見て欲しい

これは、iOS7のSafariで表示されたDatePickerです。グレー背景に黒文字と極めて見づらい表示になっています。

この表示の元となったHTMLコードは下記のようなものです。

HTML
<br /><style>
      body {<br />        background-color: black;<br />      }<br />    </style>

<input type="datetime-local" />

なんともはや、極めて単純なコード。ただ、背景色として黒を指定しているだけです。

ちなみに、iOS6までのSafariで表示すると、下図のように表示されます。当然ですが。

iOS7では半透明デザインが原則になっているので、Safariもその原則に従ったまでなのですが、Webサイトは必ずしもiOSを対象にした画面として開発されているわけではなく、当然に背景色として黒を用いることはあると思うのです。
しかし、iOS7はそんなことは知ったことではなく、とにかく原則を貫いて見づらいPickerを表示してしまう。
iOS向けアプリの開発者に対しては、Submit your iOS 7 apps today.とか言って、iOS7向けのデザインに切り替えるように強制するのもご愛敬だけれども、Safariで表示するWebサイトにもそれを強いるのはちょっとどうかなぁと思います。

PhoneGap特有の話

PhoneGapを使ってWebアプリをiOS向けネイティブアプリとしてパッケージングしようとしている場合であれば、HTMLデザインとして背景色を白っぽくして、この問題を回避することができます。
ただ、Pickerが表示されるinputエレメントが画面の下の方にある場合、HTMLの表示領域を白くしても解決しないケースがあります。

OBJECTIVEC
- (void)webViewDidFinishLoad:(UIWebView*)theWebView
{
// Black base color for background matches the native apps
theWebView.backgroundColor = [UIColor blackColor]; // ←ここ

return [super webViewDidFinishLoad:theWebView];
}

PhoneGapが自動生成するObjective-Cのコードで、MainViewController.mのwebViewDidFinishLoadにおいて、UIWebViewの背景色が黒と指定されています。
inputエレメントが画面の下の方にある場合、そこで表示されるPickerはHTMLの背景色ではなく、UIWebViewの背景色の上で半透明に表示される形になるので、冒頭で示したような見づらいPickerが表示されることになります。
そのため、UIWebViewの背景色として、白(whiteColor)などを指定しておくのが無難です。

また、以前書いたiOS7のステータスバーがPhoneGapアプリと干渉してしまう問題については、今週あたりにリリースされるらしいPhoneGap 3.1で解決されるようです。

Cordova 3.1 is expected soon (probably next week) with additional iOS 7 support:

  • Update to the splashscreen plugin to better support the status bar
  • Update to the Media and Media Capture plugins to handle the new Microphone access permissions
  • A fix to this bug (keyboard preferences)
PhoneGap and Cordova with iOS 7 | Christophe Coenraets

この記事には、当ブログでも紹介したステータスバーの分だけアプリを20px下げる方法が、JavaScriptで実現する形で記載されていました。

2013/09/26 20:08
← Nikon D5200と行った福岡撮影行(北九州・若松編)
iOS7時代のPhoneGap〜Cordova 3.1 RC… →
井上 研一
経済産業省推進資格ITコーディネータとして中小企業のDX・AI活用の現場で伴走支援を行う。「ITCプロセスガイドライン4.0」および「中小企業向けAI活用ガイド」執筆メンバー。著書・講演多数。ITエンジニアとして25年以上の実務経験。AI導入の実務に10年以上携わる。自ら開発したAIサービス「Gen2Go」が北九州発!新商品創出事業の認定を受ける。2026年4月より北九州市立大学大学院マネジメント研究科の学生としての顔も持つ。

本サイトおよびブログに掲載している内容は、特に明記のない限り、井上研一個人の見解に基づくものです。所属・関与する組織、団体、企業、研究会等の公式見解を示すものではありません。