AutoLayoutでViewの最大値を指定する方法
スクリーンのサイズにあわせてサイズが変更になるけど、指定されたサイズ以上にはならないViewの設定方法のメモ。
動作を確認した環境
環境 | 情報 |
---|---|
Xcode | 6.1.1 (6A2008a) |
iOS | 8.1 |
Swift | 1.1 |
Date | 2015/1/10 |
スクリーンショット
左右のエッジとの距離は16で、Viewの幅を最大568に設定した例。
- iPhone 6で縦置き
最大値以下なので、スクリーンサイズから決まる値が幅になる。
- iPhone 6で横置き
スクリーンサイズから決まる値が最大値を超えてるので、Viewの幅は最大値に。
- iPadで縦置き
この場合も、Viewの幅は最大値に。
設定方法
- 上下左右のエッジとの距離を普通に指定する
- サイズが変更になっても位置が決まるように、制約を設定
中央揃えになるように指定するのが一番楽かな。 - 最大値を指定する方向の制約だけ、プライオリティを750に変更
- 幅 or 高さで最大値を指定
指定したあと、最大値以下の指定になるように制約を修正しておく。
ポイントをまとめるとこんな感じ。
- エッジとの距離は固定値、ただしプライオリティを下げておく
- Viewのサイズ指定は『指定された値以下』になるようにする
具体例
- エッジとの距離を指定した制約
距離は固定で、プライオリティを下げておく。
- 幅を指定した制約
最大値以下になるように指定。
- 水平方向の位置を指定
普通に中央合わせで。
ソースコード
実際に設定したソースコードはこちら。
See_Ku / AutoLayoutTips — Bitbucket
https://bitbucket.org/See_Ku/autolayouttips
まとめ
『そもそも、こんな使い方では余ったスペースが無駄では?』って疑問への答えはまた今度。