人々は「ことを訴えている理由は、私は全く理解していない余白が前のiOS 8には何の上に完全にクラッシュを引き起こします」
XIBファイルやストーリーボードにマージンに対するあなたの制約を設定することはしません iOS7にアプリのクラッシュを作り、それはしません限り、あなたは触れていないとして、どちらもお使いiOS7デバイス上のUIの違いを確認しないUIView.layoutMargins
とUIView.preservesSuperviewLayoutMargins
、あなたのコード内でプロパティを。
iOS8のマージンとは
レイアウトマージンは、レイアウトシステムがサブビューのレイアウト時に使用できるの内部のパディングを表しますUIView
。ビューのエッジとサブビューの間にギャップが残るようにするためです。この点で、CSSのブロックに関連付けられているパディングプロパティによく似ています。
デフォルトでは、UIView
レイアウトマージンは両側に8ポイントあり、これはInterface Builderでは変更できません。ただし、UIView.layoutMargins
iOS8でのみ使用可能なコードでプロパティを設定することにより、これらの値を調整できます。
Editor> Canvas> Show Layout Rectanglesで IBを取得してマージンを表示できます。
マージンは、ビューとサブビューのレイアウトに役立ちます。毎UIView
デフォルトでマージンが付いていますが、マージンに関連する制約を設定した場合にのみビューの配置に影響します。
マージンの使い方
Interface Builderでマージンを使用する唯一の方法は、制約を構成するときにRelative to marginオプションをチェックすることです。これは、ビューをレイアウトするときに制約をエッジではなくマージンを使用するように指示する方法です。
ビューとそのサブビューの間に主要な制約を設定する4つの異なる方法を見てみましょう。制約ごとに、最初に説明した関連付けを確認します。関連付けはサブビューのリーディングであり、2番目はスーパービューのリーディングです。制約がビューのマージンまたはエッジに関連付けられているかどうかを定義するため、注意が必要なのは、各制約の端の[ マージンに相対的 ]オプションのチェックとチェック解除のステータスです。
- 最初のアイテム(チェックを外す)、2番目のアイテム(チェック):この場合、サブビューの左端をスーパービューの左マージンに揃えるように宣言します(この図に示すように)。
- 最初のアイテム(チェック解除)、2番目のアイテム(チェック解除):どちらもマージンではなくエッジを使用します。この場合、サブビューの左端をスーパービューの左端に揃える必要があることを宣言しています。
- 最初のアイテム(チェック)、2番目のアイテム(チェック解除):この場合、サブビューの左マージンをスーパービューの左端に揃える必要があることを宣言しています。この種類のレイアウトは、実際にはサブビューをスーパービューに重ねます。
- 最初の項目(チェック)、2番目の項目(チェック)。サブビューとスーパービューの両方に同じデフォルトのマージンがあるため、これは実際にはケース2と同じ効果があります。サブビューの左マージンをスーパービューの左マージンに合わせる必要があることを宣言しています。
マージンの良いところ
この新機能(iOS8)は、マージンを使用する場合にのみUI開発に影響します。
マージンを使用すると、単一のプロパティの値を変更することで、共有スーパービューとの共通の関係を共有する複数のサブビューの配置を調整できます。すべての間隔を更新する必要がある場合は、各値を1つずつ変更する代わりに、スーパービューのマージンを1行で更新することにより、関連するすべての配置を同時に変更できるため、これはすべての関連する制約を固定値で設定することに勝るものです。このようなコード:
self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);
この利点を説明するために、次のケースでは、すべてのサブビューの左端がスーパービューの左マージンに揃えられています。したがって、スーパービューの左マージンを変更すると、すべてのサブビューに同時に影響します。