iOSアプリ開発:「Auto Layout」と「制約」
前回は制約(constraint)についてあまり説明せずに使用していました。
今回は制約関連の説明を行いたいと思います。
Anchor
Anchorとは船のイカリや固定する動作を表す英語です。 UIViewは水平垂直方向の位置や長さについてのAnchorを持っており、Anchorに制約を与えることにより固定することが出来ます。
例えば、あるビューの右端Anchorと左端Anchorを別のビュー基準で制約を与えれば、基準のビューが水平方向に動いたりサイズが変わった場合にもそれに合わせて伸び縮みしてくれるようになります。
また、伸び縮みして欲しくなく、いつでも同じ長さで、左端から決まった位置に配置したいような場合は、左端Anchorと水平方向の長さAnchorに制約を与えることで実現できます。
以下にAnchorの種類を並べます。
Anchorの種類
- 垂直方向の位置についてのAnchor
メンバ名 | タイプ | 説明 |
---|---|---|
topAnchor | NSLayoutYAxisAnchor | Viewの上端を表すAnchorです |
centerYAnchor | NSLayoutYAxisAnchor | Viewの垂直方向中心を表すAnchorです |
bottomAnchor | NSLayoutYAxisAnchor | Viewの下端を表すAnchorです |
firstBaselineAnchor | NSLayoutYAxisAnchor | View内テキストの上端を表すAnchorです |
lastBaselineAnchor | NSLayoutYAxisAnchor | View内テキストの下端を表すAnchorです |
- 水平方向の位置についてのAnchor
メンバ名 | タイプ | 説明 |
---|---|---|
leadingAnchor | NSLayoutXAxisAnchor | Viewのリーディング端(左端)を表すAnchorです |
centerXAnchor | NSLayoutXAxisAnchor | Viewの水平方向中心を表すAnchorです |
trailingAnchor | NSLayoutXAxisAnchor | Viewのトレイリング端(右端)を表すAnchorです |
leftAnchor | NSLayoutXAxisAnchor | Viewの左端を表すAnchorです |
rightAnchor | NSLayoutXAxisAnchor | Viewの右端を表すAnchorです |
- 長さについてのAnchor
メンバ名 | タイプ | 説明 |
---|---|---|
heightAnchor | NSLayoutDimension | 高さを表すAnchorです |
widthAnchor | NSLayoutDimension | 幅を表すAnchorです |
constraint
Anchorは制約を与えるためのメソッドを持っています。 Anchorのタイプ毎に行くつかのメソッドを持っていますので代表的なものを説明します。
constraintの種類
// 他のAnchor(equalTo)を基準にオフセット(constant)を足した位置に固定する制約です。 // NSLayoutXAxisAnchor, NSLayoutYAxisAnchorで使用します。 func constraint(equalTo: NSLayoutAnchor<AnchorType>, constant: CGFloat) -> NSLayoutConstraint // サイズを固定する制約です。 // NSLayoutDimensionで使用します。 func constraint(equalToConstant: CGFloat) -> NSLayoutConstraint
他にも色々なメソッドがありますので興味のある人は調べてみましょう。 https://developer.apple.com/documentation/uikit/view_layout