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
まとめ
『そもそも、こんな使い方では余ったスペースが無駄では?』って疑問への答えはまた今度。