2017-11-06 14 views
0

私の古いiOSアプリケーションは、すべてのiPhoneバージョン(iPhone Xモデルを除く)でうまく動作します。私はiPhone Xシミュレータを実行し、iPhone Xの画面の下部にいくつかの画面が重なって表示されるのを見ています。私のアプリケーションは、すべてのuiviewcontrollersはプログラムによって作成され、ストーリーボードでは設計されていません。だから私はすべてのビューコントローラ(self.view.frame)を使用してフレームサイズを見つける。 iPhoneXには、ストーリーボードで設計するための安全なガード領域があります。しかし、実行時にどのように安全なガードエリアを計算するのですか? Googleを検索している間、それはiOS11からのサポートである安全なガードエリアを見つけるためのいくつかのサンプルを提供します。しかし、私はios9から私のアプリを実行したいですか?私は私のプロジェクトにuiviewcontrollerをたくさん持っています。誰も私にこの仕事をする最も簡単な方法を教えてもらえますか?iPhone Xをサポートする古いアプリですか?

+0

iPhone 8はどうですか。 – SPlatten

+0

1125ピクセル×2436ピクセルのスプラッシュスクリーンイメージを追加しましたか? – Abhishek

+0

にスプラッシュ画面が追加されました。しかし、それでも問題は解決しました。 – vinoth87

答えて

0

古い(プレストーリーボードの手動レイアウト)アプリ(古い11以前のデプロイメントターゲット)にiPhone Xレイアウトの問題のランタイムフィックスを追加する方法の1つは、

のようなObjective Cコードを追加することです
CGRect r0 = self.view.frame; 
CGRect r1 = r0; 
if (@available(iOS 11.0, *)) { 
    r1 = self.view.safeAreaLayoutGuide.layoutFrame;  
} 
if (r1.size.height < (r0.size.height - 20.0)) { 
    // fix top and bottom view overlap outside safe area here 
} 

各UIViewControllerのviewWillLayoutSubviewsメソッド内にあります。

@利用可能なチェックは、iOS 11より前のiOSバージョンでこのコードを安全に使用できるようにします。

+0

私はxcode8.2を持っています..私はストーリーボードを使用して新しいiOSアプリとUIデザインを作成するつもりです... iPhoneXで問題なくアプリを実行したいです。 xcode8.2を使ってどうすればいいですか?それは可能でしょうか? xcode9が必要です。 – vinoth87

+0

iPhone Xをサポートするには、Xcode 9が必要です。Xcode 8.xは新しいデバイスを認識していないため、アプリケーションのビューポートの上部と下部に黒い帯があります。 – sn3ek

関連する問題