NSLayoutAnchor


継承:NSObject(Class)

従属:NSObject(protocol)

フレームワーク:OS X 10.11 以降の AppKit。関連項目..


概要


NSLayoutAnchor クラスは、流れるような API を使用して NSLayoutConstraint オブジェクトを作成するためのファクトリクラスです。自動レイアウトを使用してレイアウトをプログラムで定義するには、これらの制約を使用してください。


NSLayoutConstraint オブジェクトを直接作成する代わりに、UIViewNSView、または UILayoutGuide オブジェクトであなたの制約したいものを始め、およびそのオブジェクトのアンカープロパティのいずれかひとつを選択して下さい。これらのプロパティは、自動レイアウトで使用される主な NSLayoutAttribute 値に対応しており、その属性に制約を作成するため適切な NSLayoutAnchor サブクラスを提供します。あなたの制約を構築するために、アンカーのメソッドを使用して下さい。



注意: UIView は、レイアウトマージン属性のアンカープロパティを提供していません。その代わりに、layoutMarginsGuide プロパティは、これらのマージンを表す UILayoutGuide オブジェクトを提供します。あなたの制約を作成するためガイドのアンカープロパティを使用して下さい。


<< OBJECTIVE-C >>

  1. // Creating constraints using NSLayoutConstraint
  2. [NSLayoutConstraint
  3. constraintWithItem:subview
  4. attribute:NSLayoutAttributeLeading
  5. relatedBy:NSLayoutRelationEqual
  6. toItem:self.view
  7. attribute:NSLayoutAttributeLeadingMargin
  8. multiplier:1.0
  9. constant:0.0].active = YES;
  10. [NSLayoutConstraint
  11. constraintWithItem:subview
  12. attribute:NSLayoutAttributeTrailing
  13. relatedBy:NSLayoutRelationEqual
  14. toItem:self.view
  15. attribute:NSLayoutAttributeTrailingMargin
  16. multiplier:1.0
  17. constant:0.0].active = YES;
  18. // Creating the same constraints using Layout Anchors
  19. UILayoutGuide *margin = self.view.layoutMarginsGuide;
  20. [subview.leadingAnchor constraintEqualToAnchor:margin.leadingAnchor].active = YES;
  21. [subview.trailingAnchor constraintEqualToAnchor:margin.trailingAnchor].active = YES;

<< SWIFT >>

     1. // Creating constraints using NSLayoutConstraint
     2. NSLayoutConstraint(item: subview,
     3.                   attribute: .Leading,
     4.                   relatedBy: .Equal,
     5.                   toItem: view,
     6.                   attribute: .LeadingMargin,
     7.                   multiplier: 1.0,
     8.                   constant: 0.0).active = true
     9. 
    10. NSLayoutConstraint(item: subview,
    11.                   attribute: .Trailing,
    12.                   relatedBy: .Equal,
    13.                   toItem: view,
    14.                   attribute: .TrailingMargin,
    15.                   multiplier: 1.0,
    16.                   constant: 0.0).active = true
    17. 
    18. 
    19. // Creating the same constraints using Layout Anchors
    20. let margins = view.layoutMarginsGuide
    21. 
    22. subview.leadingAnchor.constraintEqualToAnchor(margins.leadingAnchor).active = true
    23. subview.trailingAnchor.constraintEqualToAnchor(margins.trailingAnchor).active = true

これらの例からもわかるように、NSLayoutAnchor クラスは直接 NSLayoutConstraint API を使用して、いくつかの利点を提供します。



注意: NSLayoutAnchor クラスは、追加の型チェックを提供していますが、無効な制約を作成することはまだ可能です。例えば、コンパイラは、それらが両方の NSLayoutXAxisAnchor インスタンスがあるので、別のビューの leftAnchor に、あるビューの leadingAnchor を制約することができます。しかし、自動レイアウトは、左または右の属性で先頭と末尾の属性を混在する制約を許可していません。その結果、この制約は、実行時にクラッシュします。


アンカープロパティの詳細については、UIView クラスリファレンスレイアウトのアンカーを使用して制約の作成NSView クラスリファレンス、または UILayoutGuide クラスリファレンス を参照してください。



注意:

あなたは直接 NSLayoutAnchor クラスを使用することは決してありません。その代わり、作成したい制約の型に基づいて、そのサブクラスの 1 つを使用します。


  • 水平方向の制約を作成するには NSLayoutXAxisAnchor を使用してください。

  • 垂直方向の制約を作成するには NSLayoutYAxisAnchor を使用してください。

  • ビューの高さや幅に影響を与える制約を作成するには NSLayoutDimension を使用してください。

しかし、UIViewNSView、または UILayoutGuide のアンカープロパティを使用して NSLayoutAnchor オブジェクトにアクセスするので、正しいサブクラスが自動的に提供されます。


タスク


制約のビルド


- constraintEqualToAnchor:


ある項目の属性を他に等しいように、定義する制約を返します。


宣言

<< SWIFT >>

func constraintEqualToAnchor(_ anchor: NSLayoutAnchor!) -> NSLayoutConstraint!

<< OBJECTIVE-C >>
- (NSLayoutConstraint *)constraintEqualToAnchor:(NSLayoutAnchor<AnchorType> *)anchor


パラメーター

anchorUIViewNSView、または UILayoutGuide オブジェクトからのレイアウトアンカー。現在のアンカーに一致する NSLayoutAnchor のサブクラスを使用しなければなりません。 NSLayoutXAxisAnchor オブジェクト上のこのメソッドを呼び出す場合、このパラメータは、別の NSLayoutXAxisAnchor でなければなりません。

戻り値

二つのレイアウトアンカーで表される属性間の対等な関係を定義する NSLayoutConstraint オブジェクト。


議論

このメソッドは、first attribute = second attribute の関係を定義します。ここで first attribute は、このメソッドの呼び出しを受けたアンカーに表されるレイアウト属性であり、そして second attribute は、anchor パラメータによって表されるレイアウト属性です。


以下 2 つの例により表された制約は同一です。


    << OBJECTIVE-C >>

  1. // Creating a constraint using NSLayoutConstraint
  2. [NSLayoutConstraint
  3. constraintWithItem:subview
  4. attribute:NSLayoutAttributeLeading
  5. relatedBy:NSLayoutRelationEqual
  6. toItem:self.view
  7. attribute:NSLayoutAttributeLeadingMargin
  8. multiplier:1.0
  9. constant:0.0].active = YES;
  10. // Creating the same constraint using constraintEqualToAnchor:
  11. UILayoutGuide *margin = self.view.layoutMarginsGuide;
  12. [subview.leadingAnchor constraintEqualToAnchor:margin.leadingAnchor].active = YES;

    << SWIFT >>

     1. // Creating a constraint using NSLayoutConstraint
     2. NSLayoutConstraint(item: subview,
     3.                   attribute: .Leading,
     4.                   relatedBy: .Equal,
     5.                   toItem: view,
     6.                   attribute: .LeadingMargin,
     7.                   multiplier: 1.0,
     8.                   constant: 0.0).active = true
     9.
    10. // Creating the same constraint using constraintEqualToAnchor:
    11. let margins = view.layoutMarginsGuide
    12. subview.leadingAnchor.constraintEqualToAnchor(margins.leadingAnchor).active = true


利用可能

OS X 10.11 以降で利用可能。





- constraintEqualToAnchor:constant:


ある項目の属性を別の項目の属性に定数のオフセットを加えたものに定義する制約を返します。


宣言

<< SWIFT >>

func constraintEqualToAnchor(_ anchor: NSLayoutAnchor!,
                    constant c: CGFloat) -> NSLayoutConstraint!

<< OBJECTIVE-C >>
- (NSLayoutConstraint *)constraintEqualToAnchor:(NSLayoutAnchor<AnchorType> *)anchor
                                       constant:(CGFloat)c


パラメーター

anchorUIViewNSView、または UILayoutGuide オブジェクトからのレイアウトアンカー。現在のアンカーに一致する NSLayoutAnchor のサブクラスを使用しなければなりません。 NSLayoutXAxisAnchor オブジェクト上でこのメソッドを呼び出す場合、このパラメータは、別の NSLayoutXAxisAnchor でなければなりません。
c制約の定数オフセット。

戻り値

定数のオフセットを加えた二つのレイアウトのアンカーによって表される属性間の対等な関係を定義する NSLayoutConstraint オブジェクト。


議論

このメソッドは、first attribute = second attribute + c の関係を定義します。ここで first attribute がこのメソッドの呼び出しを受けるアンカーによって表されるレイアウトの属性であり、second attributeanchor パラメーターによって表されるレイアウトの属性です。値 c は、定数のオフセットを表します。すべての値はポイント単位で測定されています。しかし、これらの値は、レイアウトのアンカーの種類に応じて、異なる方法で解釈できます。


以下の2つの例により生成される制約は同一です。


<< OBJECTIVE-C >>

    
     1.// Creating a constraint using NSLayoutConstraint
     2.
     3. [NSLayoutConstraint constraintWithItem:self.textField
     4.                             attribute:NSLayoutAttributeLeading
     5.                             relatedBy:NSLayoutRelationEqual
     6.                                toItem:self.label
     7.                             attribute:NSLayoutAttributeTrailing
     8.                            multiplier:1.0
     9.                              constant:8.0].active = YES;
    10.
    11. // Creating the same constraint using constraintEqualToAnchor:constant:
    12. [self.textField.leadingAnchor constraintEqualToAnchor:self.label.trailingAnchor 
    constant:8.0].active = YES;

<< SWIFT >>

    
     1. // Creating a constraint using NSLayoutConstraint
     2.
     3. NSLayoutConstraint(item: textField,
     4.                    attribute: .Leading,
     5.                    relatedBy: .Equal,
     6.                    toItem: label,
     7.                    attribute: .Trailing,
     8.                    multiplier: 1.0,
     9.                    constant: 8.0).active = true
    10.
    11. // Creating the same constraint using constraintEqualToAnchor:constant:
    12. textField.leadingAnchor.constraintEqualToAnchor(label.trailingAnchor, constant: 8.0)
    .active = true

利用可能

OS X 10.11 以降で利用可能。





- constraintGreaterThanOrEqualToAnchor:


一つの項目の属性を別の項目以上にするように定義する制約を返します。


宣言

<< SWIFT >>

func constraintGreaterThanOrEqualToAnchor(_ anchor: NSLayoutAnchor!) -> NSLayoutConstraint!

<< OBJECTIVE-C >>
- (NSLayoutConstraint *)constraintGreaterThanOrEqualToAnchor:(NSLayoutAnchor<AnchorType> *)anchor


パラメーター

anchorUIViewNSView、または UILayoutGuide オブジェクトからのレイアウトアンカー。現在のアンカーに一致する NSLayoutAnchor のサブクラスを使用しなければなりません。 NSLayoutXAxisAnchor オブジェクト上でこのメソッドを呼び出す場合、このパラメータは、別の NSLayoutXAxisAnchor でなければなりません。

戻り値

anchor パラメータで表される属性以上として、このレイアウトアンカーによって表される属性を定義する NSLayoutConstraint オブジェクト。


議論

このメソッドは、first attribute >= second attribute である関係を作成します。ここで first attribute は、このメソッドの呼び出しを受けるアンカーによって表されるレイアウトの属性であり、そして second attribute は、 anchor パラメータによって表されるレイアウト属性です。すべての値はポイント単位で測定されています。しかし、これらの値は、レイアウトアンカーの種類に応じて、異なる方法で解釈できます。


以下の二つの例により生成される制約は同一です。


<< OBJECTIVE-C >>

  1. // Creating a constraint using NSLayoutConstraint
  2. [NSLayoutConstraint
  3. constraintWithItem:subview
  4. attribute:NSLayoutAttributeLeading
  5. relatedBy:NSLayoutRelationGreaterThanOrEqual
  6. toItem:self.view
  7. attribute:NSLayoutAttributeLeadingMargin
  8. multiplier:1.0
  9. constant:0.0].active = YES;
  10. // Creating the same constraint using constraintGreaterThanOrEqualToAnchor:
  11. UILayoutGuide *margin = self.view.layoutMarginsGuide;
  12. [subview.leadingAnchor constraintGreaterThanOrEqualToAnchor:margin.leadingAnchor].active = YES;

<< SWIFT >>

    
     1. // Creating a constraint using NSLayoutConstraint
     2. NSLayoutConstraint(item: subview,
     3.                    attribute: .Leading,
     4.                    relatedBy: .GreaterThanOrEqual,
     5.                    toItem: view,
     6.                    attribute: .LeadingMargin,
     7.                    multiplier: 1.0,
     8.                    constant: 0.0).active = true
     9. 
    10. // Creating the same constraint using constraintGreaterThanOrEqualToAnchor:
    11. let margins = view.layoutMarginsGuide
    12. subview.leadingAnchor.constraintGreaterThanOrEqualToAnchor(margins.leadingAnchor).active = true

利用可能

OS X 10.11 以降で利用可能。





- constraintGreaterThanOrEqualToAnchor:constant:


他のアイテムの属性に定数のオフセットを加えたもの以上の一つの項目の属性を定義する制約を返します。


宣言

<< SWIFT >>

func constraintGreaterThanOrEqualToAnchor(_ anchor: NSLayoutAnchor!,
                                 constant c: CGFloat) -> NSLayoutConstraint!

<< OBJECTIVE-C >>
- (NSLayoutConstraint *)constraintGreaterThanOrEqualToAnchor:(NSLayoutAnchor<AnchorType> *)anchor
                                                    constant:(CGFloat)c


パラメーター

anchorUIViewNSView、または UILayoutGuide オブジェクトからのレイアウトアンカー。現在のアンカーに一致する NSLayoutAnchor のサブクラスを使用しなければなりません。 NSLayoutXAxisAnchor オブジェクト上でこのメソッドを呼び出す場合、このパラメータは、別の NSLayoutXAxisAnchor でなければなりません。
c制約のための定数のオフセット。

戻り値

anchor パラメータに加えて定数のオフセットにより表された属性以上として、このレイアウトアンカーによって表される属性を定義する NSLayoutConstraint オブジェクト。


議論

このメソッドは、first attribute >= second attribute + c の関係を定義します。ここで first attribute は、このメソッドの呼び出しを受けるアンカーで表されるレイアウト属性であり、そして second attribute は、anchor パラメータによって表されるレイアウト属性です。値 c は、定数のオフセットを表します。すべての値はポイント単位で測定されています。しかし、これらの値は、レイアウトのアンカーの型に応じて、異なる方法で解釈できます。


以下の2つの例により生成される制約は同一です。


<< OBJECTIVE-C >>

    
     1. // Creating a constraint using NSLayoutConstraint
     2. 
     3. [NSLayoutConstraint constraintWithItem:self.textField
     4.                              attribute:NSLayoutAttributeLeading
     5.                              relatedBy:NSLayoutRelationLessThanOrEqual
     6.                                 toItem:self.label
     7.                              attribute:NSLayoutAttributeTrailing
     8.                             multiplier:1.0
     9.                               constant:8.0].active = YES;
    10. 
    11. // Creating the same constraint using constraintLessThanOrEqualToAnchor:constant:
    12. [self.textField.leadingAnchor constraintLessThanOrEqualToAnchor:self.label.trailingAnchor
    constant:8.0].active = YES;

<< SWIFT >>

    
     1. // Creating a constraint using NSLayoutConstraint
     2.
     3. NSLayoutConstraint(item: textField,
     4.                    attribute: .Leading,
     5.                    relatedBy: .GreaterThanOrEqual,
     6.                    toItem: label,
     7.                    attribute: .Trailing,
     8.                    multiplier: 1.0,
     9.                    constant: 8.0).active = true
    10.
    11. // Creating the same constraint using constraintGreaterThanOrEqualToAnchor:constant:
    12. textField.leadingAnchor.constraintGreaterThanOrEqualToAnchor(label.trailingAnchor,
    constant: 8.0).active = true

利用可能

OS X 10.11 以降で利用可能。





- constraintLessThanOrEqualToAnchor:


ある項目の属性を他の項目以下に定義する制約を返します。


宣言

<< SWIFT >>

func constraintLessThanOrEqualToAnchor(_ anchor: NSLayoutAnchor!) -> NSLayoutConstraint!

<< OBJECTIVE-C >>
- (NSLayoutConstraint *)constraintLessThanOrEqualToAnchor:(NSLayoutAnchor<AnchorType> *)anchor


パラメーター

anchorUIViewNSView、または UILayoutGuide オブジェクトからのレイアウトアンカー。現在のアンカーに一致する NSLayoutAnchor のサブクラスを使用しなければなりません。 NSLayoutXAxisAnchor オブジェクト上でこのメソッドを呼び出す場合、このパラメータは、別の NSLayoutXAxisAnchor でなければなりません。

戻り値

anchor パラメータによって表される属性以下としてこのレイアウトアンカーに表される属性を定義する NSLayoutConstraint オブジェクト。


議論

このメソッドは、first attribute <= second attribute の関係を定義します。ここで first attribute は、このメソッドの呼び出しを受けるアンカーで表されるレイアウト属性であり、そして second attribute は、anchor パラメータによって表されるレイアウト属性です。すべての値はポイント単位で測定されています。しかし、これらの値は、レイアウトアンカーの型に応じて、異なる方法で解釈できます。


以下の2つの例により生成される制約は同一です。


<< OBJECTIVE-C >>

  1. // Creating a constraint using NSLayoutConstraint
  2. [NSLayoutConstraint
  3. constraintWithItem:subview
  4. attribute:NSLayoutAttributeLeading
  5. relatedBy:NSLayoutRelationLessThanOrEqual
  6. toItem:self.view
  7. attribute:NSLayoutAttributeLeadingMargin
  8. multiplier:1.0
  9. constant:0.0].active = YES;
  10. // Creating the same constraint using constraintLessThanOrEqualToAnchor:
  11. UILayoutGuide *margin = self.view.layoutMarginsGuide;
  12. [subview.leadingAnchor constraintLessThanOrEqualToAnchor:margin.leadingAnchor].active = YES;

<< SWIFT >>

    
     1. // Creating a constraint using NSLayoutConstraint
     2. NSLayoutConstraint(item: subview,
     3.                    attribute: .Leading,
     4.                    relatedBy: .LessThanOrEqual,
     5.                    toItem: view,
     6.                    attribute: .LeadingMargin,
     7.                    multiplier: 1.0,
     8.                    constant: 0.0).active = true
     9.
    10. // Creating the same constraint using constraintLessThanOrEqualToAnchor:
    11. let margins = view.layoutMarginsGuide
    12. subview.leadingAnchor.constraintLessThanOrEqualToAnchor(margins.leadingAnchor).active = true

利用可能

OS X 10.11 以降で利用可能。





- constraintLessThanOrEqualToAnchor:constant:


ある項目の属性を他の項目の属性に定数のオフセットを加えたもの以下と定義する制約を返します。


宣言

<< SWIFT >>

func constraintLessThanOrEqualToAnchor(_ anchor: NSLayoutAnchor!,
                              constant c: CGFloat) -> NSLayoutConstraint!

<< OBJECTIVE-C >>
- (NSLayoutConstraint *)constraintLessThanOrEqualToAnchor:(NSLayoutAnchor<AnchorType> *)anchor
                                                 constant:(CGFloat)c


パラメーター

anchorUIViewNSView、または UILayoutGuide オブジェクトからのレイアウトアンカー。現在のアンカーに一致する NSLayoutAnchor のサブクラスを使用しなければなりません。 NSLayoutXAxisAnchor オブジェクト上でこのメソッドを呼び出す場合、このパラメータは、別の NSLayoutXAxisAnchor でなければなりません。
c制約のための定数のオフセット。

戻り値

anchor パラメータに定数のオフセットを加えたものによって表される属性以下として表されるこのレイアウトアンカーに表される属性を定義する NSLayoutConstraint オブジェクト。


議論

このメソッドは first attribute <= second attribute + c の関係を定義します。ここで first attribute はこのメソッドの呼び出しを受けるアンカーで表されるレイアウト属性、そして second attribute は、anchor パラメーターで表されるレイアウト属性です。値 c は、定数のオフセットを表しています。全ての値はポイントで測定されますが、これらの値はレイアウトアンカーの型によって異なる方法で解釈できます。



以下の二つの例により生成される制約は同一です。


<< OBJECTIVE-C >>

    
     1. // Creating a constraint using NSLayoutConstraint
     2.
     3. [NSLayoutConstraint constraintWithItem:self.textField
     4.                              attribute:NSLayoutAttributeLeading
     5.                              relatedBy:NSLayoutRelationLessThanOrEqual
     6.                                 toItem:self.label
     7.                              attribute:NSLayoutAttributeTrailing
     8.                             multiplier:1.0
     9.                               constant:8.0].active = YES;
    10.
    11. // Creating the same constraint using constraintLessThanOrEqualToAnchor:constant:
    12. [self.textField.leadingAnchor constraintLessThanOrEqualToAnchor:self.label.trailingAnchor
         constant:8.0].active = YES;

<< SWIFT >>

    
     1. // Creating a constraint using NSLayoutConstraint
     2.
     3. NSLayoutConstraint(item: textField,
     4.                    attribute: .Leading,
     5.                    relatedBy: .LessThanOrEqual,
     6.                    toItem: label,
     7.                    attribute: .Trailing,
     8.                    multiplier: 1.0,
     9.                    constant: 8.0).active = true
    10.
    11. // Creating the same constraint using constraintLessThanOrEqualToAnchor:constant:
    12. textField.leadingAnchor.constraintLessThanOrEqualToAnchor(label.trailingAnchor, constant: 8.0)
    .active = true

利用可能

OS X 10.11 以降で利用可能。






次:文書改定履歴
目次
Xcode 10 の新機能

  • NSLayoutAnchor
  • 概要
  • タスク
  • 制約のビルド
  • constraintEqualToAnchor:
    constraintEqualToAnchor:constant:
    constraintGreaterThanOrEqual
    ToAnchor:

    constraintGreaterThanOrEqual ToAnchor:constant:
    constraintLessThanOrEqualToAnchor:
    constraintLessThanOrEqualToAnchor :constant:
    文書改定履歴












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)












    トップへ(NSLayoutAnchor)