2017-10-24 23 views
1

私は、自動レイアウトまたはサイズクラスなしでストーリーボード& xibを使用する古いアプリケーションソースコードを持っています。私が一から書き直しているにもかかわらず、モジュールの数が多すぎるので時間がかかるでしょう。直ちに実行する必要があるのは、実行時に画面サイズを検出することによってUI要素のフレームを手動で設定するコードを修正することです。だから、このように書かれたコードは、安全なエリア外の要素を配置します自動レイアウトなしのiPhone Xインターフェイスプログラミング

このように配置されているので、多くのインターフェイス要素があるので
self.controlBarBkg568h.frame = CGRectMake(0, CGRectGetHeight(self.view.bounds) - tapBarBackgroundImage.size.height, CGRectGetWidth(self.view.bounds), tapBarBackgroundImage.size.height); 

、私はiPhone X上で動作するコードを修正する簡単な方法は何であるか疑問に思って?

答えて

2

safeAreaInsetsプロパティをUIViewに設定してください。現在のビューの安全領域を記述するUIEdgeInsetsオブジェクトです。 (Documentation

あなたの特定のケースでは、あなたはこのような何かにあなたのコードを変更することができる必要があります:あなたはこのように配置され、多くの意見を持っている場合は

self.controlBarBkg568h.frame = CGRectMake(0, CGRectGetHeight(self.view.bounds) - tapBarBackgroundImage.size.height - self.view.safeAreaInsets.bottom, CGRectGetWidth(self.view.bounds), tapBarBackgroundImage.size.height); 

は、あなたはそれらすべてを編集する必要があるとしています安全な領域を尊重する。これは手動レイアウトの短所の1つです。将来変更することは難しい(特に、一度に多くの変数を編集できるヘルパーレイアウト変数がない場合)。安全な場所に位置決めコンテンツに対して約

詳しいドキュメントはここにあります:https://developer.apple.com/documentation/uikit/uiview/positioning_content_relative_to_the_safe_area

+0

私は0もそうだね@DeepakSharma self.view.safeAreaInsets.left –

+0

に置き換える必要があるだろうと思うが、それが依存しますあなたのユースケースiPhone Xの風景をサポートしていて、左右の安全区域を尊重したい場合は、安全区域を考慮する必要があります。 – nathan